EF Core:没有导航实体集合的多对多关系
EF Core: Many to Many relationship without navigational entity collections
我想实现一个遵守 DDD 和聚合原则的模型。
我在 Company
和 User
之间存在多对多关系,但它们都是聚合根,我想通过引用 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.Company
和 CompanyUser.User
导航属性放在链接实体上显然更方便,但完全是可选的。
我想实现一个遵守 DDD 和聚合原则的模型。
我在 Company
和 User
之间存在多对多关系,但它们都是聚合根,我想通过引用 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.Company
和 CompanyUser.User
导航属性放在链接实体上显然更方便,但完全是可选的。