2017-06-20 69 views
1

我正在制作一个带有洋葱体系结构的ASP.NET MVC网站。我已经实现了一个存储库模式,现在正在我的项目中创建一个Controller方法。这是我的架构:洋葱体系结构:UI可以依赖于域

  1. 域:实体/域接口
  2. 库:通用仓库使用实体框架代码优先(现在)
  3. 服务:通用服务调用库
  4. MVC

现在在我的MVC项目,我需要访问存储库,但根据杰弗里巴勒莫,MVC是依赖从服务商和域名,但没有说库中。

我可以让我的UI依赖Repository吗?

因为服务的创建依赖于Repository,所以我现在不能做任何事情而没有依赖。我已经尝试修改Startup.cs以不直接在我的控制器中使用Repository对象,但它仍然意味着我需要添加对Repository的引用(请参阅http://dotnetliberty.com/index.php/2015/10/15/asp-net-5-mvc6-dependency-injection-in-6-steps/

+1

此时,MVC(UI)是组合根,需要知道所有图层才能将它们注册到DI容器。你能否展示一些代码来演示它是什么导致了问题。 – Nkosi

+0

@Nkosi好的,所以我认为可能会有pbs,但我猜不是。非常感谢! –

回答

1

此时,MVC(UI)是组合根,它需要知道所有图层才能将其注册到DI容器中。

经由从该层暴露的延伸部分的方法将它们注册或间接地时的启动要么指实现直接。无论哪种方式,组合根需要引用所有较低层,如果它们要添加到DI容器。

控制器也应该依赖于低层抽象而不是结核。

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

+0

好的谢谢!我只需要Repos将它们作为参数传递给实例化服务,我不会从控制器访问它们的方法(我的服务负责这个)。所以如果我能在Startup中做到这一点,一切都解决了! –

相关问题