c# - 延迟加载和 Load() 有什么区别

标签 c# entity-framework-4

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

加载()方法:

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

现在,有了这两个“如果”检查,为什么我应该优先选择另一个?

最佳答案

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

当您禁用延迟加载时,您说您将通过调用 load 来加载自己。

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

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

当您调用 Load 时,您会将所有相关对象加载到该数据库(在这种情况下不需要,因此没有它也可以工作)

关于c# - 延迟加载和 Load() 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3850163/

相关文章:

asp.net - 使用EF 4.1部署数据库更改

c# - 16 位 11025 单声道 WAVE 数据中的一个样本值

c# - 为什么接口(interface)不起作用,但抽象类可以使用泛型类约束?

c# - 使用 Entity Framework 的 Repository 和 Unit Work 模式正确处理?

silverlight-4.0 - Entity Framework 4 和 SQL Server 2008 R2 更改数据捕获不能很好地协同工作

.net - EF 有订购的集合吗?相当于 NHibernate Bag Vs Set Vs List 世界中的 list

entity-framework - Entity Framework 通用位置

c# - 设置服务器名称指示 (SNI) 取消证书绑定(bind)

c# - 在 roslyn 中解析 C# 条件编译语句

C# - 方法内的辅助方法?