如何在ASP.NET Core应用程序中使用Separate Repository和Service层程序集

时间:2017-02-27 17:44:12

标签: asp.net-core asp.net-core-mvc repository-pattern service-layer

在使用ASP.NET Core应用程序时,我似乎无法找到创建单独的服务层和存储库层程序集的好方法。我正在尝试使用EntityFrameworkCore和Azure存储。我找到了一些解决方法,他们使用.Net核心应用程序作为程序集,但它也会导致各种其他问题。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我不确定您遇到了什么问题,但这是一个很好的多项目启动器解决方案,适用于ASP.NET核心Web应用程序,由责任分解为项目:

  • 核心(域模型,抽象,服务)
  • 基础设施(特定于实施的课程)
  • UI(asp.net core mvc web project)

https://github.com/ardalis/cleanarchitecture

这有帮助吗?

答案 1 :(得分:0)

设置多层应用程序。

要记住的一些事项:

  • 权力处于抽象状态,能够轻松替换层。
  • 图层/项目具有不能具有循环依赖关系的依赖项!

说你的主项目有Db模型和控制器,而DataAccessLayer有这些服务。那么DataAccessLayer需要来自主项目的模型,而Controller需要来自DataAccessLayer的服务,从而创建循环依赖。

项目结构

简单的抽象设置可以是:

  • DbModels项目(仅包含与数据库表相等的简单简单对象)
  • IDataAccess项目包含DataAcess服务的所有接口。 (需要依赖于DbModels)
  • DataAccessLayer项目,实现IDataAccess。依赖关系:IDataAccess& DbModels
  • Toplayer项目:包含webApi / controllers。依赖关系:IDataAccess,DbModels和IDataAccess的实现,在本例中为DataAccessLayer。

DataAccessLayer将需要EntityFramework作为参考。 DatabaseContext也应该在这个项目中(以及数据库迁移)。

还要确保使用DI / IOC容器注册和解决服务。

这将是您对存储库项目的设置。

你遇到了哪些其他问题?

存储库模式的原因:

repository patternmicrosoft

的积分

正如您在此图片中看到的那样。存储库模式可以轻松切换数据库。

如果您永远不会在dataAccess层上切换数据库或使用单元测试,那么实现存储库模式基本上是不值得的。 (太多的工作,与利益相比)