具有3层架构,实体框架和DependencyInjection的MVC

时间:2011-11-18 16:50:51

标签: asp.net-mvc entity-framework dependency-injection

  

可能重复:
  DAL -> BLL <- GUI + composition root. How to setup DI-bindings?

我正在定义一个新的解决方案,我已经创建了一些项目:

  • WebUI中
  • 域名(包含我的实体)
  • BusinessLayer(包含我的业务规则)
  • DataAccessLayer(包含我的存储库的抽象和具体实现)

每个项目都有我的域名的参考。

在我在Internet上看到的每个例子中,依赖注入(ninject)都是在WebUI中定义的,但我不能这样做,因为它需要我为我的DataAccessLayer添加一个引用。

如果我将绑定关联移动到BusinessLayer,那么我的WebUI将不会与数据库无关,因为绑定在我的BusinessLayer中是硬编码的。

请提出您的意见(即使在架构中),以及为什么我有决策实施问题?

谢谢大家

2 个答案:

答案 0 :(得分:2)

您通常会在应用程序项目中配置容器。在您的情况下,ASP.NET MVC应用程序。此配置需要引用解决方案中的所有程序集。这通常不是问题。只是不要使用Web应用程序其余部分的DAL库。

如果这对您来说是个问题,请创建一个引用所有项目并配置容器的特殊Bootstrapper项目。然后从Application_Start事件中调用该项目。

答案 1 :(得分:0)

如果您在Web应用程序中引用了数据访问层,那就没关系了,只要您不在代码中实际引用它们(除了在ninject配置中)。原因是Ninject是在代码中配置的,因此要更改您的配置,您必须更改代码。

如果您想要一个纯粹基于文件的配置方法,那么您需要使用不同的Container,或者基于Ninject开发基于文件的配置。

只要您的CODE与数据库无关,您只需更改您的ninject代码并修改引用即可,您不必更改应用程序。

相关问题