实体框架:实现非常简单的关联场景

发布于 2024-09-18 15:42:23 字数 626 浏览 4 评论 0原文

我想在实体框架中实现下面提到的问题。

我有 2 个表(下面是它们的简化版本)

items 表

itemId,itemName

标签表

tagId,tagName
  • 我的逻辑是,一个项目可以有多个标签,一个标签可以有多个与其相关的项目,所以我添加了很多对很多关系(如果我错了,请在这里纠正我)

  • 我已经创建了模型(edmx 文件)和数据库。

  • 我已经编写了用于将数据添加到示例表的代码,并且工作正常。以下是示例数据

    itemId itemName ---items表
       1 |鱼
       2 |手机
    
    tagId tagName ------标签表
       1 |可以吃的
       2 |电子产品
       3 |非蔬菜
    

我需要知道如何编写这3个查询

  1. 添加标签和项目之间的关系例如添加标签“eatables”,“nonveg”到项目“fish”
  2. 获取与项目相关的所有标签(例如:fish)
  3. 获取所有标签与某个项目无关(例如:鱼)

I want to implement the below mentioned problem in Entity Framework.

I have 2 tables( below are their simplified versions)

items table

itemId,itemName

tags table

tagId,tagName
  • my logic is, an item can have more than one tag and a tag can have more than one item related to it, so I have added many to many relation (please correct me here, if I am wrong)

  • I have created model (edmx file) and database from it.

  • I have written code for adding data to my sample tables, and its working fine. Below is sample data

    itemId  itemName  ---items table
       1   |  fish
       2   |  cell phone
    
    tagId    tagName ------tags table
       1   |  eatable
       2   |  electronics
       3   |  non veg
    

I need to know how to write these 3 queries

  1. add relation between tag and item e.g. add tags "eatables", "nonveg" to item "fish"
  2. get all tags related to an item (eg: fish)
  3. get all tags not related to an item (eg: fish)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长发绾君心 2024-09-25 15:42:23

如果您的关联采用正常命名(问题中的 EDMX 图会有所帮助)...

Q 1.

Tag tag = ...  // probably load from database or create if necessary
Item item = ...
item.Tags.Add(tag);

Q 2.

var tags = item.Tags;

Q 3.a 与任何项目不相关的所有标签

var unrelatedTags = context.Tags.Where(tag => tag.Items.Count() > 0);

Q 3.b 与特定项目不相关的所有标签物品

var unrelatedTags = context.Tags.Except(item.Tags);

If your association is in place with normal naming (an EDMX diagram in your question would help) ...

Q 1.

Tag tag = ...  // probably load from database or create if necessary
Item item = ...
item.Tags.Add(tag);

Q 2.

var tags = item.Tags;

Q 3.a All tags not related to ANY item

var unrelatedTags = context.Tags.Where(tag => tag.Items.Count() > 0);

Q 3.b All tags not related to a specific item

var unrelatedTags = context.Tags.Except(item.Tags);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文