Крейг прав, потому что таблица usrgrp
имеет только 2 FK, это чистая таблица соединений, и поэтому Entity Framework интерпретирует это как ассоциацию ManyToMany.
Как показывают примеры кода, приведенные выше Крэйгом, это обычно хорошо для большинства клиентов.
Однако, если вы хотите независимо управлять отношениями UserGroup, один из вариантов - добавить дополнительный столбец в таблицу usrgrp, поэтому столбец Identity, вероятно, проще всего. В этом случае Entity Framework больше не может свернуть эту таблицу просто в навигацию, поэтому вы увидите Entity для таблицы usrgrp, которой вы можете управлять независимо.
т.е.
someUser.UserGroups.Add(new UserGroup {User = someUser, Group = someGroup});
Обратите внимание, что вам не нужно указывать столбец Identity (что было бы проблематично), поскольку он создается в хранилище.
Как правило, большинство клиентов предпочитают не видеть сущность для таблиц с чистым соединением, поскольку опыт программирования без нее проще. Например, запросы LINQ становятся немного сложнее:
это:
var users = from g in ctx.Groups
from u in g.Users
where g.Name == "Administrators"
select u;
становится:
var users = from g in ctx.Groups
from ug in g.UserGroups
where g.Name == "Administrators"
select ug.User;
Надеюсь, это дополнительное разъяснение поможет
Alex