2009-07-02 29 views
0

使用linq,你是否像nHibernate所要求的那樣爲每個請求創建一個dbContext(出於性能方面的原因,從我所瞭解的昂貴的調用中創建nhibernate中的會話)。使用linq,你是否像nHibernate要求那樣爲每個請求創建一個dbContext?

即在我的asp.net-mvc應用程序中,我可以對於給定的操作,在單獨的調用中將數據庫命中5-10次。我是否需要創建一個上下文併爲整個請求重新使用它?

回答

-1

當我使用LinqToSql做了一個小應用程序時,我發現應用程序非常遲緩,當我每次必須擊中數據庫時都創建了一個DatabaseContext對象的create-use-dispose。 當我轉移到跨多個請求共享DBContext時...應用程序突然重新啓動w.r.t.響應。

這裏是a question我張貼這是相關

9

DataContexts旨在用於一組與數據庫進行交互操作。我知道,這很模糊。他們的用法是情境。如果您正在進行相關的或特定的順序活動,那麼一個DataContext可能對您有好處。如果您正在做無關或平行的活動,請考慮爲每個活動使用一個DataContext。

考慮幾個原則:由相同的DataContext:由一個DataContext的檢索

  • 實體只能用(更新,刪除等閱讀)。如果你需要在不同的DataContext上匹配對象,你必須做一些事情,比如運行一個LINQ查詢來選擇具有相同主鍵的對象。
  • LINQ to SQL使用optimistic concurrency
  • 處理完DataContext後(讓它超出範圍並被垃圾收集很好)
  • 請勿使用靜態或共享的DataContext。
+1

這是正確的答案。 DataContexts是非常輕量級的對象,應該保持相當的原子操作。之後擺脫他們。使用聲明贏得勝利。 – mmcdole 2009-07-02 04:08:30

相關問題