什么时候应该使用延迟加载,它应该是多么懒惰

时间:2013-06-21 08:31:43

标签: c# mvvm lazy-loading

我想问一下延迟加载。我经常读到我们应该否认它,但为什么要加载可能从未使用过的数据?

作为讨论的示例,我们使用Customer

-Id
-Title
-FormOfAddress
-FirstName
-LastName
-Picture*
-DOB
-Phone
-Mobile
-Address*/Billing Address*
    -Id
    -Street
    -Number
    -Country*
        -Id
        -Name
        -Zipcode
-Bankdetails*
    -Id
    -AccountHolder
    -AccountNumber
    -Bank*
        -Id
        -Name
        -BankCode
    -IBAN

*根据座右铭“仅加载你需要的东西”来标记我将懒惰加载的对象。

修改

好吧好像我的问题不够明确,所以这里可能是我想知道的更好的表述:

我想知道为什么大多数人会从懒惰的负载中劝阻,是因为他们不能使用它还是它有非常糟糕的缺点?

2 个答案:

答案 0 :(得分:2)

通常使用Lazy Load作为调整机制,例如,如果您正在加载所有数据并且没有注意到任何性能问题,那么事实上您可能不需要担心自己(稍微)增加了延迟加载模式的复杂性。

但是,如果您注意到性能问题,那么您应该查看模式,确定最常用的数据(如上所述,标记为*的数据),并且只加载该数据。您需要进行一些性能分析,以确定是否需要额外数据(字段未标记*)会降低系统性能/减慢同一域中的任何其他操作(依赖于或依赖于你正在描述的操作)

如果您使用的是.NET 4.0(及更高版本),Lazy<T>可以帮助降低实现Lazy Load的一些复杂性(它也会为您提供线程安全性!)This Code Project article can help with the implementation

答案 1 :(得分:0)

延迟加载是有原因的。如果你知道你不会经常使用你的特定数据,那就是加载懒惰的权利。如果你不完全熟悉延迟加载,你应该避免它,因为你可能会导致错误。主要是致力于特定技术,我只是想jpa hibernate。在Lazy Init的情况下,你应该确保你不想经常重新加载你的数据,因为你可能遇到性能问题,但我想是的。