在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’检查,为什么我要先放一个呢?
最佳答案 延迟加载意味着只有在需要对象时才会发生加载,因此不会加载不必要的数据.
当您禁用延迟加载时,您说您将通过调用load来加载自己.
http://en.wikipedia.org/wiki/Lazy_loading
默认情况下禁用延迟加载,因此当您在第一行中将其设置为false时,它不会执行任何操作.
当您调用Load时,您将所有相关对象加载到该数据库(在这种情况下不需要它,这使得它在没有它的情况下工作)