[英]Implicit Lazy Loading vs Explicit Lazy Loading
我一直在閱讀實體框架,人們在為什么沒有隱式延遲加載或其他東西而哭泣。 基本上我一直在搜索有關Lazy Loading的事情,現在我知道它是什么:它是一種設計模式,它允許我們在真正需要時加載對象。
但是顯式延遲加載和隱 式延遲加載之間有什么區別。
提前致謝...
如果您有一個實體“OrderRow”和另一個實體“Order”,OrderRow上會有一個指向它所屬的訂單的導航屬性 。
目前,實體框架僅支持顯式延遲加載,這意味着如果您已經檢索了許多OrderRows並想要檢查訂單上的某些內容,則需要:
// or is an OrderRow
if(!or.Order.IsLoaded)
or.Order.Load()
or.Order.Cancel();
但是,如果您有隱式延遲加載,則不需要IsLoaded檢查,它將自動完成,您可以直接執行or.Order.Cancel()
,並且如果需要,將自動加載Order。 這就是linq-to-sql的工作方式,它可以節省一些打字和一些錯誤的風險。 另一方面,它使得不太清楚何時以及如何執行數據庫訪問。 使用隱式加載,很容易編寫低效的代碼,使得從表中獲取每行的一個DB往返。
顯式表示您將代碼顯式寫入延遲加載。
隱式意味着框架(在本例中為EF)會自行進行延遲加載,無論您是否打算加入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.