【发布时间】:2013-02-05 06:44:17
【问题描述】:
我在两个表之间存在多对多关系:[User] 和 [Group](PK 称为 ID,它是一个 IDENTITY 列)。该关系在数据库中被规范化为一个名为 [UserGroup] 的表,其中包含两列:UserID 和 GroupID。
到目前为止,EF 模型(使用 Database First)对 [UserGroup] 表进行了抽象,并没有显示为显式表。
我现在应该指出,[User] 和 [Group] 表还包含一个 OrganisationID 列,并且所有用户和组(及其关系)都驻留在特定的组织)
我现在需要向 [UserGroup] 添加一个 OrganisationID 字段,以提高数据库的性能(以便 [UserGroup] 按 OrganisationID 进行聚类)。因此,在从数据库执行刷新后,[UserGroup] 现在显示为一个独特的实体,它破坏了我用来将用户分配到组的现有 C# 代码。
以前,如果我必须创建一个组并将其分配给用户,我会使用:
user.Groups.Add(group);
即使组和用户对象刚刚创建并且尚未分配数据库键,EF 也会通过与新生成的用户创建 [UserGroup] 行来尊重这种关系SaveChanges() 上的 .ID 和 group.ID 值。
现在 [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。 任何人都可以就此提出建议。谢谢。
【问题讨论】:
标签: entity-framework entity-relationship