Вставьте только те объекты, которых еще нет в базе данных - PullRequest
1 голос
/ 11 ноября 2011

У меня есть сценарий, в котором элемент помечен несколькими тегами, некоторые из них уже находятся в базе данных, другие нет.

Я представляю, что мне нужно Attach () теги, которые уже существуют, и AddObject (), которые не существуют.Это должен быть распространенный сценарий. Каков подход «передового опыта» к этому?

1 Ответ

2 голосов
/ 11 ноября 2011

Единственный реальный способ справиться с этим -

  • Найдите, какие предметы уже существуют
  • Разделите свою коллекцию на две группы:
    • новые предметы
    • существующих предметов
  • Добавьте новые элементы и прикрепите существующие элементы, если требуется.

Так разделите ваши теги вот так

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));

затем добавьте и прикрепите, если необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...