我有一個使用實體框架(DbContext)的共享庫。這個庫用於普通的Windows應用程序以及Web MVC項目中。我使用Ninject作爲DI。如何處理共享庫的不同Ninject作用域?
這是我的理解,我應該使用InThreadScope
在DbContext
Windows應用程序和InRequestScope
爲MVC項目。
但是這會產生一些不需要的依賴關係。我的共享庫需要引用System.Web
(用於請求範圍)。或者我的web項目需要EF的引用(所以我可以更改範圍)。
是否有可能以這種方式設置Ninject以避免這些依賴關係?
所以我收集你的應用程序不直接需要的DbContext。什麼是它們使用DbContext的引用? – BatteryBackupUnit
對不起,這是我想編輯我的評論(但被破壞):如果(線程/請求):Dependency:DbContext之間存在1:1:1的關係,您還可以在Dependency之間定義範圍約束: DbContext @共享庫和Thread:Dependency @ WinApp和Request:Dependency WebApp。這不需要任何額外的項目和參考。 但是,這隻有在涉及某種1:...:1 ...:1的情況下才有可能。 – BatteryBackupUnit