实体框架 - System.Data.Entity.dll中出现未处理的“System.StackOverflowException”类型异常 - 为什么?

时间:2011-07-27 01:02:25

标签: entity-framework stack-overflow

我正在尝试使用实体框架来提出问题。我根本无法得到加载问题的模型 - 每个模型都会因stackoverflowexception而失败。

我在其他EDMX文件中有其他模型,到目前为止它们都运行良好。

QuestionEntities qc = new QuestionEntities(); System.Data.Objects.ObjectSet<FormView> qvs = qc.FormViews;

溢出发生在第二行。

据我所知,它们都是为延迟加载设置的,所以它不应该尝试加载整个数据库。为了防万一,我试图删除所有递归导航属性,但它仍然失败。

我找到的唯一类似条目是C# - Entity Framework - An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll

不幸的是,只有通过反复重启EDMX才能解决这个问题(我也尝试过)。

感谢任何帮助,谢谢

1 个答案:

答案 0 :(得分:2)

请查看生成的代码,您可能会有一些可能导致问题的递归属性定义。堆栈溢出仅发生在以无限循环结束的递归调用中。

如果您发布模型并生成代码,那么很容易找到问题原因。

当搜索中有递归包含的表时,我们确实遇到了同样的问题,例如考虑像文件系统这样的树类结构,其中目录包含子目录,这样的导航属性无法包含并导致堆栈溢出