Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как создать и обновить отношение "многие ко многим" с помощью EF

Автор вопроса: DaveBОтветов: 1

Я использую Entity Framework с SQL Server. У меня есть отношения "многие ко многим" между двумя таблицами. Я создал таблицу соединений только с полями первичного ключа двух таблиц. В конструкторе две таблицы теперь имеют свойство перехода к другой с возвращаемыми типами Collection of X, где X - другой объект. Пока все так, как должно быть. Настройка выглядит правильно.

Task           TaskProducts     Product
==========     ============     =======
TaskID         TaskID           ProductID
Description    ProductID        Name

Не каждая задача будет иметь продукт или продукты, связанные с ней. Что назначить свойству навигации "Продукты" таблицы "Задача", если для этой задачи нет связанного продукта?

Нужно ли создавать коллекцию EntityCollection с сущностями Product и назначать ее свойству навигации Products в сущности Task, если у меня есть сущности Product?

При выполнении обновлений (добавление, удаление и изменение) свойства навигации "Продукты" в объекте "Задача" я работаю с ним, как с любой другой коллекцией? Есть ли какие-то особые вещи, на которые стоит обратить внимание?

Я был бы заинтересован в любой помощи в работе со многими отношениями в Entity Framework.

Edit(17/11/2009)
Одна вещь, которую я узнал, заключается в том, что для работы отношений многие ко многим с таблицей соединения ОБА поля в таблице соединения должны быть помечены как первичные ключи;

entity-framework

Ответы

Ответ 1 · mkedobbs

В MSDN есть хорошая документация по управлению отношениями "многие ко многим" в Entity Framework:

http://msdn.microsoft.com/en-us/library/bb738695.aspx

Предписывающее руководство для вставок состоит в том, чтобы вызвать метод "Добавить" для коллекции сущностей и указать связанный объект (вместо установки свойства Value в ссылке на сущность для отношения "один ко многим").

Обновления обрабатываются так же, как и любое другое обновление EF... загрузите нужный объект, задайте измененные свойства и вызовите SaveChanges в контексте.

Удаления обрабатываются так же, вызовите DeleteObject в контексте, а затем SaveChanges.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы