【问题标题】:many to many 2 way relationship with EF5与 EF5 的多对多 2 路关系
【发布时间】:2012-10-16 15:48:11
【问题描述】:

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

当我在用户中插入一个新实体时,当我使用以下方法映射它时,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");
                    });         

【问题讨论】:

    标签: entity-framework many-to-many fluent


    【解决方案1】:

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

    当导航是一种方式时,我的工作方式。这适用于两种方式的导航。

    modelBuilder.Entity<Role>().HasMany(_ => _.Users).WithMany(_ => _.Roles)
                        .Map(_ =>
                        {
                            _.MapLeftKey("RoleId");
                            _.MapRightKey("UserId");
                            _.ToTable("UserRole", "dbo");
                        });      
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 2018-03-16
      • 1970-01-01
      相关资源
      最近更新 更多