Asp.net core 如何在ASP.NET核心应用程序中使用单独的存储库和服务层程序集

Asp.net core 如何在ASP.NET核心应用程序中使用单独的存储库和服务层程序集,asp.net-core,asp.net-core-mvc,repository-pattern,service-layer,Asp.net Core,Asp.net Core Mvc,Repository Pattern,Service Layer,在使用ASP.NET核心应用程序时,我似乎找不到创建单独的服务层和存储库层程序集的好方法。我正在尝试使用EntityFrameworkCore和Azure存储来实现这一点。我发现了一些变通方法,他们使用.Net核心应用程序作为程序集,但这也给我带来了各种其他问题 非常感谢您的帮助。我不确定您遇到了什么问题,但这里有一个针对ASP.NET核心web应用程序的多项目启动解决方案,按责任划分为多个项目: 核心(领域模型、抽象、服务) 基础设施(特定于实现的类) UI(asp.net核心mvc web

在使用ASP.NET核心应用程序时,我似乎找不到创建单独的服务层和存储库层程序集的好方法。我正在尝试使用EntityFrameworkCore和Azure存储来实现这一点。我发现了一些变通方法,他们使用.Net核心应用程序作为程序集,但这也给我带来了各种其他问题


非常感谢您的帮助。

我不确定您遇到了什么问题,但这里有一个针对ASP.NET核心web应用程序的多项目启动解决方案,按责任划分为多个项目:

  • 核心(领域模型、抽象、服务)
  • 基础设施(特定于实现的类)
  • UI(asp.net核心mvc web项目)


这有帮助吗?

我不确定您遇到了什么问题,但这里有一个针对ASP.NET核心web应用程序的好的多项目启动解决方案,按责任划分为多个项目:

  • 核心(领域模型、抽象、服务)
  • 基础设施(特定于实现的类)
  • UI(asp.net核心mvc web项目)


这有帮助吗?

设置多层应用程序

需要记住的几件事:

  • 功能在于抽象,能够轻松替换层
  • 图层/项目具有依赖项,但不能具有循环依赖项
假设您的主项目有Db模型和控制器,DataAccessLayer有服务。然后DataAccessLayer需要来自主项目的模型,控制器需要来自DataAccessLayer的服务,从而创建循环依赖关系

项目结构 简单的抽象设置可以是:

  • DbModels项目(仅包含与数据库表相等的普通简单对象)
  • IDataAccess项目包含DataAccess服务的所有接口。(需要依赖于DbModels)
  • DataAccessLayer项目,IDataAccess的实现。依赖项:IDataAccess和DbModels
  • 顶层项目:包含webApi/控制器。依赖项:IDataAccess、DbModels和IDataAccess的一个实现,在本例中是DataAccessLayer
DataAccessLayer当然需要EntityFramework作为参考。数据库上下文也应该在这个项目中(以及数据库迁移)

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

这将是存储库项目的设置

你还遇到了什么问题

为什么选择存储库模式: 归功于

正如你在这张图片中看到的。存储库模式使其能够轻松切换数据库


若您永远不会切换数据库或在dataAccess层上使用单元测试,那个么实现存储库模式基本上是不值得的。(工作太多,而不是好处)

设置多层应用程序

需要记住的几件事:

  • 功能在于抽象,能够轻松替换层
  • 图层/项目具有依赖项,但不能具有循环依赖项
假设您的主项目有Db模型和控制器,DataAccessLayer有服务。然后DataAccessLayer需要来自主项目的模型,控制器需要来自DataAccessLayer的服务,从而创建循环依赖关系

项目结构 简单的抽象设置可以是:

  • DbModels项目(仅包含与数据库表相等的普通简单对象)
  • IDataAccess项目包含DataAccess服务的所有接口。(需要依赖于DbModels)
  • DataAccessLayer项目,IDataAccess的实现。依赖项:IDataAccess和DbModels
  • 顶层项目:包含webApi/控制器。依赖项:IDataAccess、DbModels和IDataAccess的一个实现,在本例中是DataAccessLayer
DataAccessLayer当然需要EntityFramework作为参考。数据库上下文也应该在这个项目中(以及数据库迁移)

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

这将是存储库项目的设置

你还遇到了什么问题

为什么选择存储库模式: 归功于

正如你在这张图片中看到的。存储库模式使其能够轻松切换数据库


若您永远不会切换数据库或在dataAccess层上使用单元测试,那个么实现存储库模式基本上是不值得的。(太多的工作,而不是好处)

你没有写问题所在。它与任何其他框架或堆栈没有任何不同(除了
dotnet
/Powershell命令仅在应用程序中工作的限制),您没有编写问题所在。它与任何其他框架或堆栈(除了
dotnet
/Powershell命令仅在应用程序中工作的限制)没有任何不同哇,甚至与我要求的不一样。我要求提供一个坚实的解决方案,使用.NET核心类库使用Entity Core和Azure存储来执行多层应用程序。您甚至无法将框架正确地安装到类库中,以便访问所需的对象。我知道如何使用多层企业级应用程序。我整天都在吃和呼吸“四人帮”式的东西。这将是一个很好的答案,如果有人问如何在.net core之外的任何东西上使用多层应用程序。@DanielJerome很抱歉错误地解释了您的问题,但您似乎想要一个多层应用程序<代码>创建单独的服务层和存储库层程序集。那么,您是否无法在dotnet core中创建类库?或者你真正的问题是什么?哇,跟我要求的还差得远呢。我要求一个使用.NET核心类库的解决方案