EF 6 Code First许多对付有很多人使用有效载荷和自我引用

时间:2014-06-09 23:10:11

标签: entity-framework ef-code-first many-to-many ef-migrations self-referencing-table

我遇到的问题是我有多对多的关系,在其中一个表格中会有很多自我引用。

所以基本上一所学校有零个或多个小组,许多小组可以有0个或多个学校。群组表将包含多个自己的父子,因为群组可以是另一个群组的子群,或者它可以没有子节点,并且该子节点可以有子节点,一个子节点也可以有多个父节点,或者一个实体可以没有父母。

我用Payload创建了一个映射表来解决第一个多对多的问题。代码段

public class School
{
  public virtual ICollection<SchoolGroupMap> SchoolGroupMaps
}

public class SchoolGroup
{
  public virtual ICollection<SchoolGroupMap> SchoolGroupMaps
}

public class SchoolGroupMap
{
  public virtual School School
  public virtual SchoolGroup SchoolGroup
}

i然后尝试按照以下方式修改代码,以便自我引用多对多

public class SchoolGroup
{
  public virtual ICollection<SchoolGroupMap> SchoolGroupMaps

  public virtual ICollection<SchoolGroup> Parents


  public virtual ICollection<SchoolGroup> Children

}

我改变了上下文有很多和一个自动映射表(原谅我,我今天尝试了很多东西,我没有确切的代码)。我收到错误,类上的属性必须匹配。

任何人都可以帮忙。

我想在自引用多对多的情况下创建导航属性。此外,种子的例子将不胜感激

问候

1 个答案:

答案 0 :(得分:0)

你不需要3个实体,让我们一步一步地实现

第1步:与学校和团体的多对多关系

public class School
{
  public virtual ICollection<SchoolGroup> SchoolGroups;
}

public class SchoolGroup
{
  public virtual ICollection<School> Schools;
}

第2步:自我引用的学校小组

public class SchoolGroup
{
  public virtual ICollection<School> Schools;
  public virtual ICollection<SchoolGroup> SchoolGroups;
}