Требует ли связь «многие-многие» в EF6 определения таблицы сопоставления и наличия первичного ключа?

Требуется ли для таблицы EF6, используемой для многих ко многим, первичный ключ, и нужно ли мне создавать класс для этой таблицы многие ко многим? Я видел два способа создания таблицы «многие-многие». Тот, на который был дан ответ здесь, в этом вопросе:

Как назвать таблицу "многие-многие" для EF6 и нужно ли для этого добавлять специальное сопоставление?

и тот, что здесь, в этом вопросе:

Entity Framework: отношение многие ко многим, вставка и обновление

Первый ответ предлагает таблицу с первичным ключом, а второй ответ (с 6 голосами) предлагает совершенно другой подход, когда таблица «многие-многие» не определена в EF?

Мои мысли сейчас таковы, что первичный ключ не нужен. Причина, по которой я так думаю, заключается в том, что, когда я смотрю на новые таблицы, созданные с помощью ASP.NET Identity, таблица UserRoles, которая относится ко многим, не имеет первичного ключа.


person Community    schedule 21.01.2014    source источник


Ответы (1)


Когда две сущности связаны друг с другом отношением «многие ко многим», Entity Framework Code First создаст таблицу соединений без необходимости создавать класс сущностей для моделирования соединения.

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

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

Что вы должны знать, так это то, что иногда вы начинаете с отношения «многие ко многим», затем вы понимаете, что само отношение имеет некоторые атрибуты, и тогда вам нужно продвижение отношения к объекту как таковому, и вы, вероятно, добавите другой первичный ключ

Ссылка:

Настройка связи "многие ко многим"

person Colin    schedule 21.01.2014