【问题标题】:Entity Framework -- An unhandled exception of type 'System.StackOverflowException' occurred in System.Data.Entity.dll -- Why?实体框架——System.Data.Entity.dll 中出现“System.StackOverflowException”类型的未处理异常——为什么?
【发布时间】:2011-07-28 00:48:42
【问题描述】:

我正在尝试使用实体框架进行问卷调查。我根本无法加载 questionairre 模型——每个模型都因 stackoverflow 异常而失败。

我在其他 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 才能解决这个问题(我也尝试过)。

任何帮助将不胜感激,谢谢

【问题讨论】:

    标签: entity-framework stack-overflow


    【解决方案1】:

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

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

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

    【讨论】:

    • 正如我所说,我在模型中没有任何递归元素。我将把它发布在我原来的问题上。
    • 检查递归导航属性,类似于引用与外键相同的类。
    • 我已经删除了所有关系和导航属性以确保这不是问题。
    • 我从来没有弄清楚我的问题。我使用数据库的新副本完全从头开始重新启动,并再次从头开始制作模型(我确实复制/粘贴了几块)并且新版本有效。遇到此问题的其他任何人(在您检查递归之后)都应该节省时间和精力并重新启动。它似乎在实体框架的互通中。
    猜你喜欢
    • 1970-01-01
    • 2011-01-05
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多