Ленивая загрузка - это метод, используемый ORM (например, EF, NH и Linq2SQL), при котором связанные объекты в иерархии не извлекаются немедленно.Вместо этого связанные сущности выбираются только в том случае, если они необходимы, как правило, когда они «перемещаются» или разыменовываются.
Например, в модели класса у вас может быть класс Person
, который имеет Collection
(например, IEnumerable
) из Pets
, которым он / она владеет.
Если вы используете ленивую загрузку при извлечении Человека, соответствующая коллекция домашних животных не будет извлечена одновременно.Таким образом, ресурсы базы данных и памяти сохраняются.
Однако, если к коллекции Pets обращаются (и при условии, что контекст / сеанс ORM все еще доступен), тогда ORM пойдет и выберет Pets на«по мере необходимости».
Сравните это с энергичной загрузкой (например, LoadsWith
L2SQL или Include
EF), когда вызывающий явно указывает, какие из связанных сущностей будут выбраны вместе с Person.
См. Также здесь: Ленивая загрузка, отложенная загрузка и полная загрузка в платформе Entity
Повторное обновление Айенде объясняет, почему вы используете ленивую загрузку без прокси (в отличие от прокси ленивая загрузка) здесь .NoLazy отключает отложенную загрузку (т. Е. Загружается с нетерпением)
Вы можете узнать больше о методах, используемых для реализации отложенной загрузки в Wiki .Реализация шаблона NH-прокси обсуждается здесь