Да, вы правы по умолчанию. Вы также можете настроить поведение несколькими способами: в модели (в зависимости от провайдера) вы можете установить свойства отложенной загрузки для выборки во время выборки основного объекта или для ожидания запроса конкретного свойства (по умолчанию) .
Кроме того, вы можете загрузить один EntitySet для каждого родителя на запрос в запросе с DataLoadOptions
, например:
public class Parent
{
public string Name { get; set; }
public EntitySet<Child> Children { get; set; }
}
public class Child
{
public string Name { get; set; }
public int Age { get; set; }
}
var dlo = new DataLoadOptions();
dlo.LoadWith<Parent>(p => p.Children);
var dc = new DataContext();
dc.LoadOptions = dlo;
var parentAndChildren = from p in dc.Parents select p;
Выше было бы выполнено левое соединение для извлечения потомков в одном запросе. Вы можете найти больше примеров в DataLoadOptions
MSDN Docs . Существует также аналогичный AssociateWith
для ограниченной загрузки, который вы можете проверить .
Кроме того, если вам нужно загрузить EntitySet ранее, вы можете вызвать .Load () для него.