2011-03-12 114 views
1

我目前設計系統的方式是每個存儲庫都有自己的數據庫上下文。我依賴注入每個存儲庫的連接字符串。存儲庫模式的單例中的數據庫上下文

但讓我們說1頁調用2個或更多(n)存儲庫,這意味着有n單獨打電話去數據庫。使用像延遲加載的實體框架這樣的ORM,如果我共享1個數據庫上下文,有可能我的查詢可以在存儲庫級別末尾合併爲1個調用?

我該如何做到這一點?有人能給我一個基本的大綱/結構,說明如何爲所有存儲庫使用單個上下文嗎?謝謝。

+0

請參閱http://stackoverflow.com/questions/4311770/linq2sql-repository-pattern-how-to-query-data-from-two-or-more-tables – Keith 2011-03-12 23:36:29

回答

1

使用實體框架,您的查詢將永遠不會合併爲單個調用。這是當前EF實施的限制。但是,每一個http請求(最佳實踐)都有單一的上下文是一種方式。而不是注入查詢字符串注入整個上下文。

+0

所以,我會做一個基礎知識庫,並使上下文靜態? – 2011-03-12 23:42:10

+2

不!您需要爲每個請求分隔單個上下文實例,並將其傳遞給所需存儲庫的所有構造函數。這通常由IoC容器處理。 – 2011-03-12 23:44:57

+0

我爲我的IoC使用ninject,這意味着我將不得不在我的web項目中引用實體框架DLL? – 2011-03-12 23:46:01