C# 多租户数据库中的EF关联表

C# 多租户数据库中的EF关联表,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我遇到了严重的EF限制,需要帮助 这是我的桌子: 表格:公司 租户内部PK 公司ID INT PK 其他栏目 表格:角色 租户内部PK RoleId INT PK 其他栏目 以下是关联表: 表格:公司简介 租户内部PK 公司ID INT PK RoleId INT PK 我遇到的这个问题是在我的mapping类中,我试图避免对关联表进行建模以保持简单,所有事情都在前面进行过,但我们在所有地方都添加了TenantId 这是公司的C#mapper代码: this.HasMany(t

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

这是我的桌子:

表格:公司

  • 租户内部PK
  • 公司ID INT PK
  • 其他栏目
表格:角色

  • 租户内部PK
  • RoleId INT PK
  • 其他栏目
以下是关联表: 表格:公司简介

  • 租户内部PK
  • 公司ID INT PK
  • RoleId INT PK
我遇到的这个问题是在我的mapping类中,我试图避免对关联表进行建模以保持简单,所有事情都在前面进行过,但我们在所有地方都添加了
TenantId

这是
公司的C#mapper代码

  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”。
EF不支持多列键控关联表吗?关联表中的TenantId用于2个关系,但似乎每个关系都需要一个专用的TenantId,这是不可能的,因为这些列必须存在于实际的表中。

虽然我不熟悉这种情况,但您可能必须显式地提到表名,如
MapLeftKey(“CompanyRoles.TenantId”、“CompanyID”)
?嗯,@BobKaufman我从来没有尝试过……这不起作用,它会对未知列抛出SQL异常。