Неявная ленивая загрузка по сравнению с явной ленивой загрузкой

Я читал Платформу Объекта, и люди оплакивали, почему не было неявной ленивой загрузки или чего-то. В основном я искал вещи о Ленивой Загрузке, и теперь я знаю, каково это: Это - шаблон разработки, который позволяет нам загружать объекты, когда они действительно необходимы.

Но каково различие между Явной Ленивой Загрузкой и Неявной Ленивой Загрузкой.

Заранее спасибо...

9
задан Tarik 4 April 2010 в 08:14
поделиться

2 ответа

Если вы, например, есть сущность «OrderRow» и другая сущность «Order», в OrderRow будет навигационное свойство , указывающее на Order, к которому он принадлежит.

В настоящее время Entity Framework поддерживает только Explicit Lazy Load, что означает, что если вы получили несколько OrderRows и хотите что-то проверить в Order, вам необходимо:

// or is an OrderRow
if(!or.Order.IsLoaded)
    or.Order.Load()

or.Order.Cancel();

Однако, если у вас есть неявная отложенная загрузка вам не нужна проверка IsLoaded, она будет выполнена автоматически, вы можете выполнить или.Order.Cancel () напрямую, и Заказ будет загружен автоматически, если это необходимо. Вот как работает linq-to-sql, и это избавляет от некоторого набора текста и некоторого риска ошибок. С другой стороны, это делает менее ясным, когда и как будет осуществляться доступ к базе данных. При неявной загрузке легко написать неэффективный код, который делает один обход БД для каждой строки, извлекаемой из таблицы.

5
ответ дан 4 December 2019 в 21:49
поделиться

Явный означает, что вы явно написали код для ленивой загрузки.

Неявный означает, что фреймворк (в данном случае EF) сам выполняет ленивую загрузку, независимо от того, собирались вы это делать или нет.

4
ответ дан 4 December 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: