Does linq to sql автоматически выполняет ленивую загрузку связанных объектов?Ли linq для sql автоматически lazy загружает связанные объекты?
Я бы подумал, что это будет, но я не могу найти статью, в которой говорится о ней как таковой.
Does linq to sql автоматически выполняет ленивую загрузку связанных объектов?Ли linq для sql автоматически lazy загружает связанные объекты?
Я бы подумал, что это будет, но я не могу найти статью, в которой говорится о ней как таковой.
Да, я считаю, что так и есть. Он также имеет функцию «load with»/semantic, которая позволяет вам загружать несколько вещей в подход с дробовиком. Это полезно, когда вы знаете, что вам понадобятся связанные данные вместе с основным сущностью сразу с места в карьер, например, предварительно кэшировать все данные, необходимые для создания единой веб-страницы и т. Д.
Да, ленивая загрузка по умолчанию. Выезд this article.
Это зависит от того, как вы определяете «ленивую нагрузку».
Если вы говорите
var person = (from p in db.People
where p.PersonId = pid
select p).First();
var spouse = person.Spouse; // based on the SpouseId FK
// back into the People table.
Тогда это было бы именно «lazying нагрузки», как второй объект не извлекается из базы данных, пока не упоминаются. Однако это потребует двух запросов к базе данных.
Однако, если вы должны были сказать,
var family = (from p in db.People
where p.PersonId = pid
select new
{
Name = p.Name,
SpouseName = p.Spouse.Name
}).First();
Тогда Linq будет автоматически делать соединения и загружать информацию из обеих записей в одном запросе к базе данных.