仅插入那些尚未存在于数据库中的对象

时间:2011-11-11 02:33:28

标签: c# asp.net-mvc entity-framework-4

我有一个场景,其中一个项目被标记了多个标签,其中一些已经在数据库中,其他则没有。

我想我需要Attach()已经存在的标签和AddObject()那些不存在的标签。这必须是一个常见的场景,对此最好的做法是什么?

1 个答案:

答案 0 :(得分:2)

解决这个问题的唯一方法是

  • 查找已存在的项目
  • 将您的收藏分成两组:
    • 新项目
    • 现有项目
  • 添加新项目,并根据需要附加现有项目。

所以像这样分割你的标签

var tags = context.Tags.Where(t => t.ItemId = itemId) // search via your item
   .Select(t => t.TagValue);

var newTags = myItem.Tags.Where(t => !tags.Contains(t.TagValue));
var existingTags = myItem.Tags.Where(t => tags.Contains(t.TagValue));

然后添加&酌情附上。