链接表中的EF插入在其中一个父表中创建条目

时间:2015-07-23 14:26:50

标签: c# sql-server entity-framework

情况如下: - 表用户(id,名称) - 表格角色(id,名称) - 一个链接表UsersRoles(idUser,idRole)

在链接表中,idUser和idRoles是FK,并且它们中的两个被标记为复合主键。

在EF中,这会产生以下模型:

    public class User {
        public int ID {get;set;}
        public string Name {get;set;}
        public ICollection<Role> Roles {get;set;}
   }

    public class Role{
        public int ID {get;set;}
        public string Name {get;set;}
        public ICollection<User> Users{get;set;}
   }

将角色插入用户时会发生奇怪的事情。

user.Roles.Add(role);
context.SaveChanges();

在UsersRoles表中创建一个条目,并在Role表中添加一个Role。实际上它复制了我试图与用户关联的角色。

与EF有关吗?是因为表中的FK和PK设置吗?

任何暗示都可以被欣赏。

2 个答案:

答案 0 :(得分:0)

您要添加的角色是否具有已存在的角色的Id值。如果它只有一个名称,那么EF可能会向数据库中添加一个新条目。

答案 1 :(得分:0)

经过一番小小的实验,我发现自己犯了一个愚蠢的错误。 我正在调用user.Roles.Add(role),其中role是一个新的Role Entity,其中包含了id和name。 (role = new Role(id,name))

我需要做的是从DB记录中获取现有角色,然后将其添加到用户。 (role = dbContext.Find(id)))