【发布时间】:2014-01-18 21:07:57
【问题描述】:
我有一个包含以下内容的 Visual Studio 解决方案:
- MyProject.Domain - POCO。
- 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 - 这确实是重复的。您提供的链接回答了我的问题(尤其是您的回答!)。我投票结束。谢谢!
标签: service orm architecture dependency-injection inversion-of-control