2009-01-19 54 views
21

我並不清楚關於使用和重新使用實體框架Context的最佳做法。我應該共享Entity-Framework上下文還是爲每個操作創建一個新的上下文?

我的問題是,我應該嘗試創建1個上下文並多次重複使用它以用於不同的查詢,還是應該爲每個查詢創建一個新的上下文?

例如,如果我有一個包含10個圖表並且所有數據都從同一個表中查詢的表單,那麼這10個查詢應該來自一個上下文還是10個不同的上下文?

從代碼封裝的角度來看,我寧願創建10個新的上下文,這是一個好主意,它是可擴展的嗎?

回答

10

這一切都取決於你的應用程序。

一個關鍵的考慮因素是ObjectContext不是線程安全的,所以對於Web應用程序而言,每個請求的ObjectContext是要走的路。

對於Win Forms應用程序,您可以查看具有更長壽命的ObjectContexts。但是,如果您希望更緊密地確定範圍,我會首先嚐試,而不是過早地優化它。

更多關於丹尼西蒙斯的博客here

+0

感謝您的鏈接,它提供了我需要爲我的問題創建不同情境的信息。此外,我之前沒有注意到Detach方法,以便將來的項目可以派上用場。 – Rhys 2009-01-30 12:59:28

2

恕我直言 - 我可能是錯的,但我這是怎麼做到這一點...

如果你正在談論的模式 - 上下文中使用一個。由於您只需要一個模型 - 上下文來查詢 - 即這是數據庫模型。

如果你在談論ObjectContext - 那麼每個查詢(Linq)一個。 在這個Performance Considerations for Entity Framework

+0

這是一個非常好的鏈接,它在創建許多上下文時幫助緩解了對性能的一些擔憂。 – Rhys 2009-01-30 12:56:45

相關問題