Как создать и обновить отношения «многие ко многим» с EF - PullRequest
0 голосов
/ 14 ноября 2009

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

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

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

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

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

Мне будет интересна любая помощь в работе со многими отношениями в Entity Framework.

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

1 Ответ

0 голосов
/ 15 ноября 2009

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

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

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

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

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

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