对于用户和角色之间的简单多对多关系,我有以下流畅的配置。我需要两种方式的导航属性,因此在角色中有一组用户,反之亦然。
当我在用户中插入一个新实体时,EF 尝试插入一个 Role_Id 列,当我使用以下映射它时。该列显然是 RoleId,而不是 Role_Id,而且它位于多对多表中。用户上不能有 Role_Id。
我想通过在双方都有一个集合,EF 会以某种方式感到困惑。
modelBuilder.Entity<User>().HasMany(_ => _.Roles).WithMany()
.Map(_ =>
{
_.MapLeftKey("UserId");
_.MapRightKey("RoleId");
_.ToTable("UserRole", "dbo");
});
当我尝试以另一种方式创建关系时,通过将以下配置放在上述配置之后,我得到一个异常,指出关系已经定义。
modelBuilder.Entity<Role>().HasMany(_ => _.Users).WithMany()
.Map(_ =>
{
_.MapLeftKey("RoleId");
_.MapRightKey("UserId");
_.ToTable("UserRole", "dbo");
});