我有了以下的Visual Studio解決方案:使用Ninject + DbContext + Service + MVC的體系結構:如何將DbContext注入服務?
- MyProject.Domain - 波蘇斯。
- MyProject.Data - ORM(實體框架DbContext)。
- MyProject.Services - DbContext周圍的包裝。包含執行業務邏輯的類。
- MyProject.Web - 使用服務層的MVC應用程序。
對於我的MVC應用程序,我使用Ninject將服務注入到我的MVC控制器中。在我的MVC項目綁定看起來像這樣:
kernel.Bind<ISomeService>().To<SomeService>();
這部分工作正常。但是,我還想在我的服務中注入IDbContext
,而我在網上看到的示例有點令人困惑。我在網上看到的例子看起來使上面的代碼看起來是這樣的:
kernel.Bind<ISomeService>().To<SomeService>();
kernel.Bind<ISomeDbContext>().To<SomeDbContext>();
現在,由於SomeDbContext
位於MyProject.Data,這意味着我必須在我的MVC項目添加到ORM項目的引用。這有效,但這似乎打敗了IoC的目的。 MVC項目不應該「瞭解」ORM,對吧?爲什麼這不被認爲是糟糕的設計?管理這種依賴的正確方法是什麼?
@Steven - 這確實是重複的。你提供的鏈接回答我的問題(特別是你的回答!)。我正在投票結束。謝謝! – anon