链接表中的EF插入在其中一个父表中创建条目
本文关键字:一个 创建 EF 插入 在其中 链接表 | 更新日期: 2023-09-27 18:04:22
情况如下:-表用户(id, name)-表角色(id, name)-一个链接表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设置吗?
任何提示都可以欣赏。
在做了一些实验之后,我发现我犯了一个愚蠢的错误。我正在调用user.Roles.Add(role),其中role是一个新的角色实体,它的id和名称已填充。(role = new role (id, name))
我需要做的是从DB记录中获取一个现有角色,然后将其添加给用户。(role = dbContext.Find(id)))
要添加的角色是否具有已经存在的角色的Id值?如果它只有一个名称,那么EF可能会向数据库添加一个新条目。