我有了以下的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