Навигационное свойство не материализовано в синтаксисе запросов Linq, также отложенная загрузка не работает
Ниже приведено соединение с использованием linq:
var query = from a in TableA
join b in TableB
on new { a.Id1, a.Id2 } equals new { b.Id1, b.Id2 }
select a;
var entities = query.ToList();
foreach(var item in entities)
{
foreach(var b in item.B)
{
var propValue = b.SomeProperty;
}
}
Предположим, что в TableB есть соответствующие записи для элементов в TableA. Но после выполнения запроса в навигационном свойстве B каждого A. не было значения.
Также, когда я пытаюсь получить доступ к нему во внутреннем цикле foreach, он не отправляет запрос в БД для загрузки этих объектов (отложенная загрузка).
Я что-то упускаю или это так, как должна работать структура сущностей.
Потому что здесь, в этом случае, я ожидал, что отложенная загрузка будет работать и загружать связанные объекты при доступе.
Есть ли способ материализации этих навигационных свойств при использовании синтаксиса запросов LINQ без потери возможности писать чистый SQL-запрос без вложенных запросов.
1 ответ
Вы не должны присоединяться к LINQ to Entities. Вместо этого используйте ваши свойства навигации.
var query = from a in TableA.Include(a => a.B)
select a;