Linq Join With Include Statement
IQueryable<Employee> emps = CreateObjectSet<Employee>()
.Include(u => u.Departments)
.AsQueryable();
IQueryable<Products> prods = CreateObjectSet<Products>().AsQueryable();
CreateObjectSet - ObjectContext CreateObjectSetMethod
return (from emp in emps
join prod in prods
on emp.ProductID equals prod.ProductID
where emp.EmployeeID == 10
select employee).ToList();
Проблема заключается в первой строке, я использую оператор include и включаю отделы с сотрудниками, значения возвратов не имеют отделов, поскольку они никогда не включаются. Пожалуйста, предложите что-нибудь.
Это всего лишь демонстрационный запрос, фактический запрос является очень сложным, поэтому, пожалуйста, не предлагайте, чтобы я не пошел с инструкцией join, но просто включал предложение include и where, которое не служит мне в моем сценарии.
Спасибо
Ответы
Ответ 1
Это известная проблема с include. Вы можете взглянуть на следующую статью Включить в EF
> var results =
> ((from post in ctx.Posts
> from blog in post.Blogs
> where blog.Owner.EmailAddress == "[email protected]"
> select post) as ObjectQuery<Post>).Include("Comments");
Если это решение не сработает для вас, вы также можете попытаться исправить это, сгруппировав свои данные и выбрав отделы в качестве одного из значений вашего типа.
Механизм фиксации отношения к объекту EF затем "исправит" include для вас.
Ответ 2
Это можно решить с помощью следующего кода:
var query = from emp in emps
join prod in prods
on emp.ProductID equals prod.ProductID
where emp.EmployeeID == 10
select employee;
var result = query.Include(u => u.Departments)