我在两个表之间有一个多对多的关系:[User]和[Group](PK 被称为 ID,它是一个 IDENTITY 列)。该关系在数据库中被规范化为一个名为[UserGroup]的表,其中包含两列:UserID 和 GroupID。
到目前为止,EF 模型(使用数据库优先)对[UserGroup]表进行了抽象,它并未显示为显式表。
我现在应该指出,[User]和[Group]表还包含一个 OrganisationID 列,并且所有用户和组(及其关系)都驻留在特定的组织中)
我现在需要将 OrganisationID 字段添加到[UserGroup]以提高数据库的性能(以便[UserGroup]按 OrganisationID 进行聚类)。因此,在从数据库执行刷新后,[UserGroup]现在显示为一个不同的实体,它破坏了我用来将用户分配到组的现有 C# 代码。
以前,如果我必须创建一个组并将其分配给用户,我会使用:
user.Groups.Add(group);
即使组和用户对象刚刚创建并且尚未为其分配数据库键,EF 通过在SaveChanges ( )。
现在[UserGroup]作为 EF 模型中的显式表存在,此代码不起作用(原因:还必须显式添加 OrganisationID)但我不知道如何创建[UserGroup]对象并将其与将其链接到新创建的[User]和[Group]行。
我得到的最接近的是:
GroupUser gu = new GroupUser { GroupID = group.ID, OrganisationID = nOrganisationID, UserID = u.ID };
u.GroupUsers.Add( gu );
...但它不会起作用,因为 user.ID 和 group.ID 仍然是 0。任何人都可以就此提出建议。谢谢。