我首先在我的MVC项目中使用E.F 6.2代码并配置项目以使用Asp.Net Identity 2进行记帐。我有一个“BaseData”实体,它包含我的所有基本数据。这是班级主体:
家长实体:
public class BaseData
{
public int Id { get; set; }
public string Caption { get; set; }
public virtual ICollection<A> Children1 { get; set; }
public virtual ICollection<B> Children2 { get; set; }
.
.
.
public virtual ICollection<ZZZ> ChildrenN { get; set; }
}
所以其他实体必须与之相关。在我的例子中,每个子实体与“BaseData”父实体有数百个关系,我有数百个子实体。所以父母实体有成千上万的关系。这是子实体的伪代码:
儿童实体
public class A
{
public int Id { get; set; }
public int BaseData1Id { get; set; }
public BaseData BaseData1 { get; set; }
public int BaseData2Id { get; set; }
public BaseData BaseData2 { get; set; }
.
.
.
public int BaseData300Id { get; set; }
public BaseData BaseData300 { get; set; }
}
.
.
.
.
public class ZZZ
{
public int Id { get; set; }
public int BaseData1Id { get; set; }
public BaseData BaseData1 { get; set; }
public int BaseData2Id { get; set; }
public BaseData BaseData2 { get; set; }
.
.
.
public int BaseData300Id { get; set; }
public BaseData BaseData300 { get; set; }
}
我正在使用E.F流畅的API来配置我的实体之间的关系。问题是,当我运行项目并想要获取一些数据,如用户帐户时,我得到“StackOverFlow”异常!!
为解决这个问题,我尝试逐个删除子实体,然后重新创建数据库。我发现当孩子减少时,问题就解决了,我没有得到例外,但我不知道为什么!!
E.F的导航属性是否有限制? 是否有解决方案来增加堆栈容量以防止“StackOverFlow”异常?