Asp.net mvc 在维护SoC的同时在MVC中使用Unity

Asp.net mvc 在维护SoC的同时在MVC中使用Unity,asp.net-mvc,inversion-of-control,unity-container,n-tier-architecture,modular-design,Asp.net Mvc,Inversion Of Control,Unity Container,N Tier Architecture,Modular Design,我将给出我的项目解决方案的简化版本。我的解决方案中有以下项目。MVC,核心,数据,通用。公共存储枚举、静态类、数据传输对象等。无逻辑,无程序集。MVC层可以访问Core和Common。Core可以访问数据和公共数据。数据可以访问公共数据库 我的类已经使用接口使用依赖项。我想为IoC实现Microsoft Unity。我添加了UnityConfig来配置MVC、Core和数据项目。然后我可以让Unity注册每个项目类。这很好用,我想我已经有问题了 我团队中的一位开发人员告诉我,我不应该这样做。我在

我将给出我的项目解决方案的简化版本。我的解决方案中有以下项目。MVC,核心,数据,通用。公共存储枚举、静态类、数据传输对象等。无逻辑,无程序集。MVC层可以访问Core和Common。Core可以访问数据和公共数据。数据可以访问公共数据库

我的类已经使用接口使用依赖项。我想为IoC实现Microsoft Unity。我添加了UnityConfig来配置MVC、Core和数据项目。然后我可以让Unity注册每个项目类。这很好用,我想我已经有问题了

我团队中的一位开发人员告诉我,我不应该这样做。我在所有三层中添加了一个依赖项。我能理解他的观点,我想知道在这种环境中实现Microsoft Unity的最佳实践是什么

另一个开发人员希望我将数据层引用添加到MVC项目中。那么Unity就可以包含在MVC项目中。我真的不喜欢将数据层纳入MVC项目范围的想法。我曾经有过开发人员直接调用实体的糟糕经历,我更愿意强迫他们使用核心层(业务层)并让核心层进行数据库调用

我还考虑添加一个单独的项目,以便Unity能够看到所有3层。有人指出,这可能会产生一个问题,因为只有一个合成根。这不是我以前真正想过的事情

我真的希望有一个cleaver解决方案,它不包括从MVC向数据层添加引用


非常感谢您。

您的实际问题是什么?我想知道向MVC项目添加Unity的正确方法,以便它能够在不依赖MVC项目的情况下解析数据层类。我提到的问题的答案清楚地表明,这不是您应该担心的问题。Steven链接到“Ioc/DI-为什么我必须引用入口应用程序中的所有层/程序集?”正是我的问题。重构到接口导致我的数据项目没有包含在构建中,这让我感到震惊。如果我手动将data.dll复制到MVC bin文件夹中,它就会工作。我渴望找到一种可接受的方法将data.dll程序集移动到mvc项目bin文件夹中。在整个项目过渡期间,通过测试和生产,必须对其进行维护。我们使用TFS来管理构建。谁能给我指出正确的方向吗?谢谢