代码之家  ›  专栏  ›  技术社区  ›  kofucii

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

  •  4
  • kofucii  · 技术社区  · 14 年前

    在EntityFramework4中,延迟加载和使用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 );
         }
    }
    

    现在,有了这两张“如果”支票,我为什么要先付一张呢?

    2 回复  |  直到 13 年前
        1
  •  2
  •   Oskar Kjellin    14 年前

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

    当你禁用 延迟加载 你说你将通过调用LOAD来加载你自己。

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

    延迟加载 默认情况下是禁用的,因此当您将其设置为 false 在你的第一行,它什么都不做。

    当你打电话 Load ,您将把所有相关的对象加载到该数据库中(在这种情况下不需要,这使得它可以在没有数据库的情况下工作)。

        2
  •  0
  •   ssmith    13 年前

    这个帖子 Working with Lazy Loading in EF 4 Code First 还应该有助于理解实体框架在启用或不启用延迟加载的情况下的行为。它还演示了在EF4中默认启用它,以及如何在每个实例上或在应用程序的默认情况下禁用它。