Привет Фелипе,
Когда к запросу применяется Включить, оно
добавляет дополнительный «диапазон запроса»
информация к запросу, который затем
используется позже, когда запрос
фактически выполнен. Диапазон запроса
информация используется для внутренних
перепишите запрос так, чтобы объекты
что может быть достигнуто через
указанные свойства навигации
также принес из базы данных и
материализовались.
Когда применяются другие операторы запросов
после включения мы пытаемся сохранить это
информация о диапазоне запроса. Тем не менее
информация о диапазоне запроса, указанная в
Включить не будет течь по запросу
оператор, который меняет тип результата
запроса.
Например, в таком запросе:
var result =
от человека в контексте. Люди. Люди ("Автомобили")
выберите новый {person, person.Houses.Count, bar, foo, etc};
Тип результата меняется из-за
операция проецирования (выберите) в
конец и тип конечного результата
запрос больше не оригинал
тип сущности, над которой было включено
применяется, поэтому информация о диапазоне запроса
потерян. Общая рекомендация
избежать этого всегда применять
в конце:
var result =
from person in context.People
select new { person, person.Houses.Count, bar, foo, etc };
var resultWithCars =
result.Include("Cars");
В этом случае, однако, результат
что Включить будет выбрасывать исключение
во время выполнения (в отличие от сбоя
молча) потому что диапазон запроса не может
действительно применяется к анонимному
тип.
Все описанное выше поведение
дизайн, но так как это невозможно
для включения, чтобы бросить исключение в
Во многих случаях мы обнаружили, что это
общий источник путаницы для
клиентов.
Если вы хотите сделать проекцию в
анонимный тип как этот, и вы хотите
чтобы получить собственность Автомобили, есть
на самом деле очень простой способ. Просто
включить собственность автомобилей в
проекция, как это:
var result =
from person in context.People
select new { person, person.Cars, person.Houses.Count, bar,
foo и т. Д.};
В настоящее время мы рассматриваем некоторые
улучшения API диапазона запросов для
будущие версии, которые могут касаться
такие вопросы, поэтому ваш отзыв
очень ценится Но так как мы не
планирование улучшений для текущего
отпусти и сохраняем будущее
улучшения в нашем внутреннем отставании,
Я продолжу решать текущий
рабочий элемент.
Спасибо, Диего Вега Entity Framework
Команда