Насколько я знаю, Entity Framework игнорирует Включает, как только вы не хотите возвращать полные объекты, а только проекции. Смотрите, например, ответ здесь . Я не уверен, что это все еще верно для всех типов прогнозов, но, очевидно, это все еще верно в вашей ситуации.
Вы можете обойти это, добавив свойство навигации, которое вы хотите загрузить в анонимный тип:
var items = from item in context.ProductosBodegas
select new {
Product = item.Product,
TypeP = item.Product.TypeP
};
(Вам больше не нужно .Include
здесь.) После выполнения этого запроса (например, с помощью .ToList()
) вы можете проецировать только ту часть анонимного типа, которую хотите иметь, например:
var products = items.ToList().Select(x => x.Product);
Элементы в этой коллекции products
уже загрузили свойство ссылки TypeP
.
Edit:
Важное примечание: не меняйте порядок .ToList
и .Select...
. Пока это ...
var products = items.Select(x => x.Product).ToList();
... также синтаксически корректен и также возвращает перечень продуктов, в этом случае ссылка TypeP
НЕ будет загружена. Запрос для анонимного типа должен быть сначала выполнен в базе данных, а коллекция анонимных типов загружена в память. Затем вы можете выбросить ту часть анонимного типа, которую вы не хотите иметь, методом .Select
.