Присоединение сущности к ObjectContext без связанных сущностей с помощью EF4 POCO - PullRequest
0 голосов
/ 06 января 2011

Пример: объект продукта загружается вместе с его тегами без отслеживания :

repository.Product
  .Include("Tag")
  .Where(p => p.ProductID == 1)
  .Execute(MergeOption.NoTracking);

Обратите внимание, что это отношение многие-ко-многим ;продукт может иметь несколько тегов, а теги могут быть связаны с несколькими продуктами.

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

То есть ни одно из этих изменений не может быть сохранено:

  • Тег удален из продукта
  • Тег добавлен в продукт
  • Тег был изменен (например, имя было изменено)

Поэтому я подумал, что могу каким-то образом присоединить только продукт к новому ObjectContext иСохранить изменения.Но по какой-то причине я не могу понять, как присоединить к контексту объекта только одну сущность, а не весь граф.

Конечно, я мог бы прикрепить граф и затем вручную отсоединить все другие сущности, кромепродукт, о котором идет речь, но это ужасное решение, и я надеялся найти другое.

1 Ответ

1 голос
/ 07 января 2011

Вы можете попытаться сделать клон вашего Продукта (не глубокий клон!), Прикрепить клон и сохранить изменения. Ваш исходный граф объектов останется отсоединенным. Единственная проблема может быть, если вы используете что-то вроде метки времени для обработки параллелизма. Вам придется скопировать новую метку времени из клона обратно в исходную сущность, иначе вы не сможете снова сохранить исходную сущность.

...