Почему мастер Entity Data Model Wizard не может работать для многих связанных таблиц? - PullRequest
2 голосов
/ 14 февраля 2011

У меня есть база данных с 3 таблицами следующим образом:

enter image description here

В Visual Web Developer 2010 Express я создаю модель EF с помощью мастера моделей данных Entity.Я выбираю 3 таблицы.К сожалению, полученная модель EF не содержит соединительную таблицу, т. Е. Таблицу QuestionsTags.На следующем рисунке показана диаграмма модели EF.

enter image description here

Мой вопрос: Почему мастер моделей данных сущностей не может работать для многих связанных таблиц?

Ответы [ 2 ]

2 голосов
/ 14 февраля 2011

Это разница между физической моделью и концептуальной моделью. В физической модели вы используете соединение, способное определять отношение M: N, потому что базы данных отношений не поддерживают его изначально. В концептуальной модели вы не имеете дело с физической памятью. Соединительная таблица не входит в концептуальную модель, потому что она не нужна. Вам не нужно обращаться к нему, вам нужно получить доступ к тегам, связанным с вопросами или вопросами, связанными с тегами. Эти отношения напрямую доступны через свойства навигации.

Соединительная таблица будет автоматически добавлена ​​в модель, только если она содержит дополнительные столбцы (не только FK для построения отношения M: N). Также можно вручную изменить (EF4) модель и заставить ее добавить сущность для соединительной таблицы.

2 голосов
/ 14 февраля 2011

Работает.Обратите внимание на свойства навигации внизу диаграммы модели EF.

Таблица QuestionsTags существует только для моделирования отношения «многие ко многим» в реляционной базе данных.Когда у вас есть объекты, которые не должны вписываться в жесткую схему таблиц, вы можете использовать коллекцию для объекта вопроса, чтобы получить все теги для этого вопроса, а также коллекцию для объекта тега, чтобы получить все вопросыэтот тег ... Entity Framework моделирует это для вас и будет автоматически заполнять эти коллекции.

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