情况如下: - 表用户(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设置吗?
任何暗示都可以被欣赏。
答案 0 :(得分:0)
您要添加的角色是否具有已存在的角色的Id值。如果它只有一个名称,那么EF可能会向数据库中添加一个新条目。
答案 1 :(得分:0)
我需要做的是从DB记录中获取现有角色,然后将其添加到用户。 (role = dbContext.Find(id)))