实体框架:实现非常简单的关联方案

时间:2010-09-09 20:56:00

标签: entity-framework ado.net entity-framework-4

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

我有2张桌子(下面是他们的简化版本)

项目表

itemId,itemName

标签表

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

如果您的关联符合正常命名(问题中的EDMX图表会有帮助)...

问题1。

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

问题2.

var tags = item.Tags;

问3.a所有标签与任何项目无关

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

Q 3.b所有与特定项目无关的标签

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