0

对于用户和角色之间的简单多对多关系,我有以下流畅的配置。我需要两种方式的导航属性,因此在角色中有一组用户,反之亦然。

当我在用户中插入一个新实体时,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");
                    });         
4

1 回答 1

0

我想通了,真的很简单,因为这种关系是我必须指定另一条腿的两种方式。

当导航是一种方式时,我拥有它的方式。这在导航有两种方式时有效。

modelBuilder.Entity<Role>().HasMany(_ => _.Users).WithMany(_ => _.Roles)
                    .Map(_ =>
                    {
                        _.MapLeftKey("RoleId");
                        _.MapRightKey("UserId");
                        _.ToTable("UserRole", "dbo");
                    });      
于 2012-10-17T09:17:03.030 回答