Я открыл ошибку в 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)
Кто-нибудь подумал, почему это так, или как обойти это? Глядя на код (с Reflector) ParsePath, кажется, что они жестко закодировали там магическое число 8 ...
ОБНОВЛЕНИЕ : ответ Microsoft:
Спасибо, что подняли этот вопрос. Мы планируем снять ограничение на количество элементов в пути «Включить» в следующем выпуске.
ОБНОВЛЕНИЕ 2 : Несмотря на приведенный выше ответ Microsoft, ошибка была не исправлена в EF 4.1
ОБНОВЛЕНИЕ 3 : По словам Microsoft, должно быть исправлено в .NET 4.5, но я не проверял предварительный просмотр разработчика, чтобы увидеть, работает ли он.