Asp.net mvc 洋葱架构:UI能否依赖于域

Asp.net mvc 洋葱架构:UI能否依赖于域,asp.net-mvc,onion-architecture,Asp.net Mvc,Onion Architecture,我正在制作一个带有洋葱结构的ASP.NETMVC网站。我已经实现了一个存储库模式,现在正在我的项目中创建一个控制器方法。这是我的架构: 域:实体/域接口 Repository:首先使用实体框架代码的通用存储库(目前) 服务:调用存储库的通用服务 MVC 现在在我的MVC项目中,我需要访问存储库,但根据Jeffrey Palermo的说法,MVC依赖于服务和域,但没有提到存储库 我可以使我的UI依赖于存储库吗 现在没有依赖关系我什么都做不了,因为服务创建依赖于存储库。我已尝试修改Startup.c

我正在制作一个带有洋葱结构的ASP.NETMVC网站。我已经实现了一个存储库模式,现在正在我的项目中创建一个控制器方法。这是我的架构:

  • 域:实体/域接口
  • Repository:首先使用实体框架代码的通用存储库(目前)
  • 服务:调用存储库的通用服务
  • MVC
  • 现在在我的MVC项目中,我需要访问存储库,但根据Jeffrey Palermo的说法,MVC依赖于服务和域,但没有提到存储库

    我可以使我的UI依赖于存储库吗

    现在没有依赖关系我什么都做不了,因为服务创建依赖于存储库。我已尝试修改Startup.cs,使其不直接在控制器中使用存储库对象,但这仍然意味着我需要添加对存储库的引用(请参见)

    此时,MVC(UI)是合成根,它需要知道所有层,以便向DI容器注册它们

    启动可以在注册实现时直接引用实现,也可以通过从该层公开的扩展方法间接引用实现。无论哪种方式,如果要将所有较低层添加到DI容器中,组合根都需要引用它们

    控制器还应该依赖于较低层的抽象,而不是具体化


    如果将存储库直接注入控制器,那么我建议检查设计,因为这可能表明职责混合。

    此时,MVC(UI)是合成根,它需要知道所有层,以便向DI容器注册它们。你能展示一些代码来说明是什么导致了问题吗?@Nkosi好的,所以我想可能会有pbs,但我想不会。非常感谢!好的,谢谢!我只需要repo将它们作为参数传递给实例化服务,我不会从控制器访问它们的方法(我的服务负责这个)。所以,如果我能在创业中做到这一点,一切都解决了!