我在哪里将实体框架查询放在分层体系结构中?

发布于 2025-01-18 09:51:12 字数 380 浏览 1 评论 0原文

我有 .net core api 项目,其中包含以下文件夹:

模型包含数据库表类和 dbcontext

服务包含发送电子邮件的逻辑和业务逻辑(示例根据分数计算学生成绩)

控制器包含具有相应操作(api 端点)的控制器。 dbcontext 被注入到控制器中,端点包含 LINQ 查询(例如:_ctx.Students.Where.....

我想将其组织成分层架构。

UI层将包含api项目(控制器)并引用业务层dll。

业务层将包含发送电子邮件逻辑和业务逻辑(根据分数评分)。我认为这必须引用数据层才能获取数据。

数据层将包含表类和数据库上下文。

我应该将之前位于控制器操作方法中的实体框架查询放在哪里?

I have .net core api project with following folders:

Models contains the database table classes and dbcontext

Services contain logic to send email, and business logic (example calculate student grade based on marks)

Controller contains the controllers with respective actions (api endpoints). The dbcontext is injected into the controller and the endpoints contain the LINQ queries (example: _ctx.Students.Where.....)

I want to organize this into layered architecture.

UI layer will contain the api project (controllers) and reference the business layer dll.

Business layer will contain the send email logic, and business logic (grading based on marks). I think this must reference the data layer to be able to fetch data.

Data layer will contain the table classes and db context.

Where do I place my entity framework queries which were previously in the controller action method?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

若水般的淡然安静女子 2025-01-25 09:51:13

我经常建议使用存储库模式来构建 ASP.NET 应用程序,特别是在采用整体架构时。此模式通过将应用程序组织为三个主要层来促进明确的关注点分离:

  1. 存储库/数据层:该层包含所有模型并处理数据库交互,包括实体框架逻辑。
  2. 服务/业务层:核心业务逻辑驻留在此处,确保数据操作遵循必要的规则和流程。
  3. 控制器/API层(Web项目):该层管理API端点并促进客户端交互。

分层结构概述

  • 存储库层:定义模型和数据库调用。
  • 服务层:实现业务逻辑和复杂的数据操作。
  • Web/API 层:为客户端通信提供端点和接口。

要进一步阅读有关在 ASP.NET 中实现存储库模式的信息,请考虑这些富有洞察力的文章:

虽然一些示例显示了单个项目中的所有层,但将每个层分离到不同的类库中通常是有益的,以获得更好的模块化和可维护性。

I often suggest using the repository pattern to structure ASP.NET applications, especially when adopting a monolithic architecture. This pattern promotes a clear separation of concerns by organizing the application into three primary layers:

  1. Repository/Data Layer: This layer contains all models and handles database interactions, including the Entity Framework logic.
  2. Service/Business Layer: The core business logic resides here, ensuring that data operations adhere to the necessary rules and processes.
  3. Controller/API Layer (Web Project): This layer manages API endpoints and facilitates client-side interactions.

Layered Structure Overview:

  • Repository Layer: Defines models and database calls.
  • Service Layer: Implements business logic and complex data manipulation.
  • Web/API Layer: Provides endpoints and interfaces for client communications.

For further reading on implementing the repository pattern in ASP.NET, consider these insightful articles:

While some examples show all layers within a single project, it’s often beneficial to separate each layer into distinct class libraries for better modularity and maintainability.

勿挽旧人 2025-01-25 09:51:13

我通常会这样分层我的应用程序:

  • API-端点
  • 应用程序层 - 所有胶合代码,映射,乐团代码,实用程序和其他应用程序级代码都在此处
  • 域层 - 纯粹包含域,子域,验证,验证,存储库和互动的接口,工作单位和命令。
  • 数据层 - 该层包含所有存储库和工作接口单元的实现。 这是我保留所有查询和数据库特定代码的层。

I usually layer my application like this:

  • APIs - EndPoints
  • Application Layer - All glueing code, mapping, orchestra code, utilities, and other application-level code comes here
  • Domain Layer - Purely contains domains, sub-domains, validations, interfaces for repositories and unit of work, and commands.
  • Data Layer - This layer contains the implementation of all the repositories and unit of work interfaces. And this is the layer where I keep all my queries and database-specific code.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文