Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架6.1.2多对多_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 实体框架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

我在实体框架6.1.2中遇到问题。我相信这本书以前会被收录,但我在任何地方都找不到。在构建数据库实体框架时,不会为我拥有的两个列表项创建关系,因为我在上面将它们声明为单个实体

这方面有什么办法吗

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实体类型生成代理类。