Entity Framework - модель сначала, сопоставление «многие ко многим» - PullRequest
0 голосов
/ 02 февраля 2012

В базе данных у меня есть две таблицы User и Organization, а также таблица мостов Users_Orgs.

Таблица Users_Orgs имеет составной ключ, состоящий из двух столбцов userId и organizationId. Когда я использую конструктор для создания ассоциации, он создает два принципа для ссылочного ограничения - Users и Users_Orgs. Проблема связана с ограничением Users_Orgs - в нем есть ключ, включающий в себя organizationId и userId. Поскольку organizationId отсутствует в таблице User, она не может быть отображена и поэтому не будет компилироваться.

Users_Orgs table Users_Orgs Constraints

При нажатии кнопки «Удалить» диалоговое окно просто закрывается, и organizationId просто сопоставляется с первичным ключом для таблицы пользователей (которая не является userId)

Как можно сделать много-много сопоставлений с составными ключами в существующей базе данных?

1 Ответ

1 голос
/ 02 февраля 2012

Почему у вас есть мостовая таблица в вашей модели? Это не нужно, если у вас нет дополнительных свойств в этой таблице. В противном случае вы должны просто смоделировать отношения между Users и Organizations и правильно настроить множественность «многие ко многим». EF автоматически создаст таблицу мостов и сопоставление для этого отношения.

Для решения вашей проблемы: Таблица мостов является зависимой, а не основной. Переключите роли в ограничении и сопоставьте User.UserId PK с Users_Orgs.UserId FK.

...