В чем разница между отложенной загрузкой и загрузкой () - PullRequest
4 голосов
/ 03 октября 2010

В Entity Framework 4, в чем разница между отложенной загрузкой и использованием метода Load ()?

Редактировать: я добавил два оператора "если":

Ленивая загрузка:

var query = from c in context.Contacts select c;
foreach ( var contact in query ) {
     if ( contact.ID == 5 )
        Console.WriteLine( contact.Addresses.City );
}

Метод Load ():

context.ContextOptions.LazyLoadingEnabled = false;

var query = from c in context.Contacts select c;
foreach ( var contact in query ) {
     if ( contact.ID == 5 ) {
        contact.Addresses.Load()
        Console.WriteLine( contact.Addresses.City );
     }
}

Теперь, имея эти две проверки «если», почему я должен отдавать предпочтение одной перед другой?

Ответы [ 2 ]

2 голосов
/ 03 октября 2010

Lazy Loading означает, что загрузка произойдет только тогда, когда объект необходим, что не приведет к загрузке ненужных данных.

Когда вы отключаете Lazy Loading, вы говорите, что загрузите себя, вызвав load.

http://en.wikipedia.org/wiki/Lazy_loading

Lazy Loading отключен по умолчанию, поэтому, когда вы устанавливаете его в false в первой строке, он ничего не делает.

Когда вы вызываете Load, вы загружаете все связанные объекты в эту базу данных (которая не нужна в этом случае, что делает ее без нее доступной)

0 голосов
/ 03 октября 2011

Этот пост Работа с отложенной загрузкой в ​​EF 4 Code First также должна помочь понять, как Entity Framework ведет себя как с включенной отложенной загрузкой, так и без нее.Это также демонстрирует, что он включен по умолчанию в EF4 и как отключить его для каждого экземпляра или по умолчанию для вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...