2009-01-28 56 views

回答

2

LinqToSql和EntityFramework都提供了這兩種功能(延遲加載和數據緩存)。

例如,如果您最初加載客戶,該客戶將被緩存,如果再次請求,您將得到相同的實例。

如果您在初始加載期間未加載客戶訂單,那麼該客戶實例的訂單屬性將處於卸載狀態。當您加載這些訂單時,訂單實例將通過該屬性可用。

  • LinqToSql將在第一次使用時加載該屬性。
  • EntityFramework將在請求時加載屬性(使用Load方法)。

在這兩種技術中,上下文都是緩存......所以如果您使用多個上下文實例 - 您可以觀察不同的實際上代表相同客戶的客戶實例。


在評論中解決您的問題。我會談論LinqToSql,但這些東西也應該在EntityFramework中工作。

如果我關閉延遲加載我拿它的數據緩存仍然會工作?

是的,這將工作。但是,它們並不完全獨立。

數據緩存刷新取決於數據表和/或時間是否有變化?

沒有刷新或重置緩存。如果你想要一個新的緩存,那麼要做的是創建一個新的DataContext。每個DataContext實例都有自己的緩存。

  • 有一種方法可以通過數據庫中的更改來更新緩存 - Refresh
  • 無法將更改從數據庫推送到緩存。
+0

如果我關閉延遲加載我認爲它的數據緩存仍然工作?數據緩存刷新取決於數據表和時間是否有變化? – zsharp 2009-01-28 18:30:18

相關問題