【发布时间】:2011-03-10 16:47:03
【问题描述】:
我为此在 Microsoft Connect 上打开了一个错误,但很长一段时间后没有响应(请参阅下面的编辑了解他们的响应)。就这样吧:
当尝试使用 linq 查询中的“包含”函数请求实体框架及其关系时,不可能通过超过 8 个步骤的路径(路径中的 8 个 . 点字符)请求关系。这会阻止我完成一些动态生成的查询,这些查询需要访问超过该级别的重定向。
我得到以下异常,而不是成功完成查询:
"Foo.Bar.Baz...(some more path string here)", the current limit of "8" is insufficient.
at System.Data.Common.MultipartIdentifier.IncrementStringCount(String name, String[] ary, Int32& position, String property)
at System.Data.Common.MultipartIdentifier.ParseMultipartIdentifier(String name, String leftQuote, String rightQuote, Char separator, Int32 limit, Boolean removequotes, String property, Boolean ThrowOnEmptyMultipartName)
at System.Data.Objects.Span.ParsePath(String path)
at System.Data.Objects.Span.Include(String path)
at System.Data.Objects.Span.IncludeIn(Span spanToIncludeIn, String pathToInclude)
有没有人知道为什么会这样,或者解决这个问题的方法?查看 ParsePath 的代码(带有 Reflector),似乎他们在其中硬编码了幻数 8...
更新:微软的回应:
感谢您提出此问题。我们计划在下一版本中取消包含路径中元素数量的限制。
更新 2:尽管上面引用了 Microsoft 的回应,但该错误没有在 EF 4.1 中修复
更新 3:根据微软的说法,应该在 .NET 4.5 中修复,但我没有测试开发者预览版是否有效。
【问题讨论】:
-
这是预期的,因为 4.1 不是下一个版本。它只是 4.0 的包装器,不会改变现有程序集中的任何内容。
标签: entity-framework include-path