在Entity Framework 4中,延迟加载和使用Load()方法有什么区别?
编辑:我添加了两个'if'语句:
延迟加载:
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 );
}
}
现在,有了这两个'if'检查,我为什么要先放一个呢?
答案 0 :(得分:2)
Lazy Loading
表示只有在需要对象时才会发生加载,因此不会加载不必要的数据。
当您停用Lazy Loading
时,您说您将通过调用load来加载自己。
http://en.wikipedia.org/wiki/Lazy_loading
默认情况下, Lazy Loading
处于停用状态,因此当您在第一行中将其设置为false
时,它不会执行任何操作。
当您调用Load
时,您将所有相关对象加载到该数据库(在这种情况下不需要它,这使得它在没有它的情况下工作)
答案 1 :(得分:0)
Working with Lazy Loading in EF 4 Code First上的这篇文章也应该有助于理解实现框架在启用和不启用延迟加载的情况下的行为方式。它还演示了它在EF4中默认启用,以及如何在每个实例上或默认情况下为您的应用程序禁用它。