C# 实体框架6.1.2多对多
我在实体框架6.1.2中遇到问题。我相信这本书以前会被收录,但我在任何地方都找不到。在构建数据库实体框架时,不会为我拥有的两个列表项创建关系,因为我在上面将它们声明为单个实体 这方面有什么办法吗C# 实体框架6.1.2多对多,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我在实体框架6.1.2中遇到问题。我相信这本书以前会被收录,但我在任何地方都找不到。在构建数据库实体框架时,不会为我拥有的两个列表项创建关系,因为我在上面将它们声明为单个实体 这方面有什么办法吗 public class SomeClass { public TeamMember LeadPartner { get; set; } public Team Team { get; set; } public List<TeamMember> OtherTeamM
public class SomeClass
{
public TeamMember LeadPartner { get; set; }
public Team Team { get; set; }
public List<TeamMember> OtherTeamMembers { get; set; }
public List<Team> OtherTeams { get; set; }
}
公共类SomeClass
{
公共团队成员LeadPartner{get;set;}
公共团队{get;set;}
公共列表其他团队成员{get;set;}
公共列表其他团队{get;set;}
}
很抱歉,如果之前有人问过这个问题,我真的找不到任何相关内容。很可能在其他类中存在歧义。例如,如果您在
团队
中定义了一个列表
,EF无法确定此属性是与公共团队
(这将创建一个多人关系)合作还是与公共列表其他团队
(创建多人关系)合作。两者都是有效的
要解决歧义,请在其他类的列表中添加[InverseProperty(“OtherTeams”)]
注释
此外,最佳做法是将属性公开为i集合
,而不是列表
,在构造函数中创建一个新列表
或任何内容。这允许您在以后更改实现,例如使用哈希集来代替。在其他类中很可能存在歧义。例如,如果您在团队
中定义了一个列表
,EF无法确定此属性是与公共团队
(这将创建一个多人关系)合作还是与公共列表其他团队
(创建多人关系)合作。两者都是有效的
要解决歧义,请在其他类的列表中添加[InverseProperty(“OtherTeams”)]
注释
此外,最佳做法是将属性公开为i集合
,而不是列表
,在构造函数中创建一个新列表
或任何内容。这允许您以后更改实现,例如使用哈希集来代替。在DbContext中添加映射。onmodel创建
覆盖类似于以下内容:
modelBuilder.Entity<SomeClass>()
.HasMany<TeamMember>(sc => sc.OtherTeamMembers)
.HasMany();
// .HasMany(tm => tm.SomeClassNavigationPropertyList);
modelBuilder.Entity()
.HasMany(sc=>sc.OtherTeamMembers)
.HasMany();
//.HasMany(tm=>tm.SomeClassNavigationPropertyList);
在DbContext中添加映射。OnModelCreating
覆盖类似于以下内容:
modelBuilder.Entity<SomeClass>()
.HasMany<TeamMember>(sc => sc.OtherTeamMembers)
.HasMany();
// .HasMany(tm => tm.SomeClassNavigationPropertyList);
modelBuilder.Entity()
.HasMany(sc=>sc.OtherTeamMembers)
.HasMany();
//.HasMany(tm=>tm.SomeClassNavigationPropertyList);
我不太清楚你在问什么。您特别希望存在哪些当前不存在的关系?您是说您希望Entity framework在表上生成一个外键,该表包含LeadPartner字段的SomeClass
到TeamMember
,并在TeamMember
表上生成一个外键到SomeClass
表,如下所示:那么?还有,你对这个实体的配置是什么样子的?我不太清楚你在问什么。您特别希望存在哪些当前不存在的关系?您是说您希望Entity framework在表上生成一个外键,该表包含LeadPartner字段的SomeClass
到TeamMember
,并在TeamMember
表上生成一个外键到SomeClass
表,如下所示:那么?另外,您对此实体的配置是什么样的?您可以选择使用注释或fluent API来配置实体。此外,如果您选择使用ICollection
,entity framework将为您的POCO实体类型生成代理类。您可以选择使用注释或fluent API来配置实体。此外,如果您选择使用ICollection
,实体框架将为您的POCO实体类型生成代理类。