为此,我在 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 的代码(带有反射器),似乎他们在那里硬编码了幻数 8 ......
更新:微软的回应:
感谢您提出这个问题。我们计划在下一个版本中取消包含路径中元素数量的限制。
更新 2:尽管上面引用了微软的回应,但该错误在 EF 4.1中并未修复
更新 3:根据微软的说法,应该在 .NET 4.5 中修复,但我没有测试开发者预览版是否有效。