延迟加载和加载()之间的区别是什么

在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 ); } } 

现在,有了这两个’如果’检查,为什么我要先做一个呢?

Lazy Loading意味着只有在需要对象时才会发生加载,因此不会加载不必要的数据。

当您禁用Lazy Loading您说您将通过调用load来加载自己。

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

默认情况下禁用Lazy Loading ,因此当您在第一行中将其设置为false ,它不会执行任何操作。

当您调用Load ,您将所有相关对象加载到该数据库(在这种情况下不需要它,这使得它在没有它的情况下工作)

这篇关于在EF 4 Code First中使用延迟加载的文章也应该有助于理解实现框架在启用和不启用延迟加载的情况下的行为方式。 它还演示了它在EF4中默认启用,以及如何在每个实例上或默认情况下为您的应用程序禁用它。