EF Core:没有导航实体集合的多对多关系

EF Core: Many to Many relationship without navigational entity collections

我想实现一个遵守 DDD 和聚合原则的模型。

我在 CompanyUser 之间存在多对多关系,但它们都是聚合根,我想通过引用 ID 而不是实体类型来建模它们的关系,即

public class Company
{
    public List<int> UserIds { get; set; }
}

public class Users
{
    public List<int> CompanyIds { get; set; }
}

是否可以使用 Fluent 模型构建器 API 来实现这一点?也就是说,它会构建一个多对多 table 由以下列组成:| UserId | CompanyId |

当然,您只需选择退出方便且有用的 EF 多对多模式,它有一个隐藏链接 table,并添加第一个 class 链接实体。例如

public class Company
{
    public List<CompanyUser> CompanyUsers { get; set; }
}

public class Users
{
    public List<CompanyUser> CompanyUsers { get; set; }
}

public class CompanyUser
{
    public int CompanyId {get;set;}
    public int UserId {get;set;}
}

并将 CompanyUser 配置为在 (CompanyId,UserId) 上设置其键,在 (UserId, CompanyId) 上设置备用键(或唯一约束)。

CompanyUser.CompanyCompanyUser.User 导航属性放在链接实体上显然更方便,但完全是可选的。