多租户DB中的EF关联表

时间:2014-11-24 20:26:49

标签: c# sql-server entity-framework

我遇到了严重的EF限制并需要帮助。

以下是我的表格:

表:公司

  • TenantId INT PK
  • CompanyId INT PK
  • 其他栏目......

表:角色

  • TenantId INT PK
  • RoleId INT PK
  • 其他栏目......

这是关联表: 表:CompanyRoles

  • TenantId INT PK
  • CompanyId INT PK
  • RoleId INT PK

我遇到的这个问题是在我的映射类中,我试图避免对关联表进行建模以保持简单,一切都工作得更早,但我们在任何地方添加了TenantId

以下是Company的C#映射器代码:

  this.HasMany(t => t.ContactRoles)
      .WithMany(t => t.Companies)
      .Map(m =>
      {
        m.ToTable("CompanyContactRoles");
        m.MapLeftKey("TenantId", "CompanyID");
        m.MapRightKey("TenantId", "RoleID");
      });

EF爆炸,因为我在多对多映射的两侧使用TenantId,这是错误:

在模型生成期间检测到一个或多个验证错误:

TenantId:名称:类型中的每个属性名称必须是唯一的。物业名称' TenantId'已定义。

EF不支持多列KEYED关联表吗?关联表中的TenantId用于2个关系,但它似乎想要为每个关系使用专用的TenantId,因为这些列必须存在于实际表中,所以不会发生。

0 个答案:

没有答案