2012-03-09 81 views
3

我不確定具體的實現在這裏很重要,但爲了完整我使用Autofac作爲我的依賴注入容器爲新的應用程序。依賴注入存儲庫的生存期

我所有的存儲庫都依賴於我使用MVC3集成庫配置爲InstancePerHttpRequest()DbContext(工作單元),以便每個請求的存儲庫之間共享工作單元。

我看過一些使用Autofac的應用程序,我注意到它們將其存儲庫的生命週期設置爲SingleInstance()(singleton)。它是否正確?

我問的原因是我可以理解我們並不真的需要多個存儲庫類,但是如果我們創建一個存儲庫的單個實例,那肯定意味着只有一個對DbContext的引用。在我的資源庫實現中,它作爲一個類成員訪問DbContext,例如_dbContext.Set<T>等等....

因此_dbContext必須有一個對內存中某個對象的引用。兩個獨立的請求怎麼可能出現,有一個獨特的DbContext但共享相同的存儲庫?

我錯過了與DI工作方式有關的事情嗎?

+1

它大部分聽起來像生命的錯誤配置,因爲我當然可以理解你爲什麼問。但是,從理論上講,可以使用這個技巧來實現它:http://stackoverflow.com/questions/4648318/dependency-injection-new-instance-required-in-several-of-a-classes-methods/4650050 #4650050 – 2012-03-09 15:26:45

回答

2

你沒有遺漏任何東西 - SingleInstance()在你的場景中幾乎肯定是存儲庫的錯誤選擇。

相關問題