3
我不確定具體的實現在這裏很重要,但爲了完整我使用Autofac作爲我的依賴注入容器爲新的應用程序。依賴注入存儲庫的生存期
我所有的存儲庫都依賴於我使用MVC3集成庫配置爲InstancePerHttpRequest()
的DbContext
(工作單元),以便每個請求的存儲庫之間共享工作單元。
我看過一些使用Autofac的應用程序,我注意到它們將其存儲庫的生命週期設置爲SingleInstance()
(singleton)。它是否正確?
我問的原因是我可以理解我們並不真的需要多個存儲庫類,但是如果我們創建一個存儲庫的單個實例,那肯定意味着只有一個對DbContext
的引用。在我的資源庫實現中,它作爲一個類成員訪問DbContext
,例如_dbContext.Set<T>
等等....
因此_dbContext
必須有一個對內存中某個對象的引用。兩個獨立的請求怎麼可能出現,有一個獨特的DbContext
但共享相同的存儲庫?
我錯過了與DI工作方式有關的事情嗎?
它大部分聽起來像生命的錯誤配置,因爲我當然可以理解你爲什麼問。但是,從理論上講,可以使用這個技巧來實現它:http://stackoverflow.com/questions/4648318/dependency-injection-new-instance-required-in-several-of-a-classes-methods/4650050 #4650050 – 2012-03-09 15:26:45