Restaurants WebAPI(一)—— clean architecture

embedded/2024/12/21 14:07:40/

文章目录

  • 项目地址
  • 一、Restaurants.Domain 核心业务层
    • 1.1 Entities实体层
    • 1.2 Repositories 数据操作EF的接口
  • 二、Restaurants.Infrastructure 基础设施层
    • 2.1 Persistence 数据EF CORE配置
    • 2.2 Repositories 数据查询实现
    • 2.3 Extensions 服务注册
  • 三、Restaurants.Application用例层
    • 3.1 RestaurantsUseCase 餐厅用例
    • 3.2 Interfaces 接口
    • 3.3 Extensions 服务注册


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、Restaurants.Domain 核心业务层

独立于框架和数据库,最基础的实体业务和对接数据库查询方法的接口
在这里插入图片描述

1.1 Entities实体层

业务核心数据表的实体

1.2 Repositories 数据操作EF的接口

  • 数据库里需要执行的所有查询方法的接口,之所以在Domain层,可以理解和实体表相关的数据库操作都在这里,所以这里的所有接口的都有2个功能:
    1. 该接口用于被Infrastructure里的继承,然后实现具体的EF数据库操作,例如查询,删除等;
    2. 用来注册服务,①的EF具体操作实现后,就可以直接通过注册服务,给Application里的UseCase使用;
  • IRestaurantsRepository.cs
    在这里插入图片描述

二、Restaurants.Infrastructure 基础设施层

数据库访问以及外部API适配

在这里插入图片描述

2.1 Persistence 数据EF CORE配置

  • EF的上下文配置,这里是SQL
  • RestaurantsDbContext.cs
using Microsoft.EntityFrameworkCore;
using Restaurants.Domain.Models;namespace Restaurants.Infrastructure.Persistence
{internal class RestaurantsDbContext: DbContext{public RestaurantsDbContext(DbContextOptions<RestaurantsDbContext> options):base(options){            }public DbSet<Restaurant> Restaurants { get; set; }public DbSet<Dish> Dishes { get; set; }protected override void OnModelCreating(ModelBuilder modelBuilder) {base.OnModelCreating(modelBuilder);modelBuilder.Entity

http://www.ppmy.cn/embedded/147544.html

相关文章

构建MacOS应用小白教程(打包 签名 公证 上架)

打包 在package.json中&#xff0c;dependencies会被打进 Electron 应用的包里&#xff0c;而devDependencies则不会&#xff0c;所以必要的依赖需要放到dependencies中。files中定义自己需要被打进 Electron 包里的文件。以下是一个完整的 mac electron-builder的配置文件。 …

STM32单片机芯片与内部33 ADC 单通道连续DMA

目录 一、ADC DMA配置——标准库 1、ADC配置 2、DMA配置 二、ADC DMA配置——HAL库 1、ADC配置 2、DMA配置 三、用户侧 1、DMA开关 &#xff08;1&#xff09;、标准库 &#xff08;2&#xff09;、HAL库 2、DMA乒乓 &#xff08;1&#xff09;、标准库 &#xff…

uniapp scroll-view 不生效排查

排查路径&#xff1a; 开启 refresher-enabled 属性使用竖向滚动时&#xff0c;需要给 <scroll-view> 一个固定高度&#xff0c;通过 css 设置 height&#xff1b;使用横向滚动时&#xff0c;需要给 <scroll-view> 添加 white-space: nowrap; 样式父元素不要设置 …

spring学习(XML中定义与配置bean(超详细)。IoC与DI入门spring案例)

目录 一、配置文件(XML)中定义与配置bean。 &#xff08;1&#xff09;bean的基础配置。&#xff08;id、class&#xff09; &#xff08;2&#xff09;bean的别名配置。 1、基本介绍。 2、demo测试。 3、NoSuchBeanDefinitionException&#xff01; &#xff08;3&#xff09;…

最大子数组和 最大子数组和(有长度限制) 最大m段子数组和

1.最大子数组和 可以用dp求解,只需要维护一个sum表示目前为止的最大子数组,遇到num[i]时若sum > 0则sum可以继续作为子数组更新sum为sum num[i]否则sum更新为num[i] 2.最大子数组和(有长度限制) 135. 最大子序和 - AcWing题库 要求长度不超过m的子数组,首先求出原数组的…

基于注意力机制的faster-rcnn算法的目标检测(源码+pytorch框架)

需要完整代码和数据集请私信或评论 网络架构设计 基于注意力机制的R-CNN网络架构在传统Faster R-CNN基础上进行了创新性改进,特别融入了卷积注意力模块(CBAM),旨在提升模型对关键特征的捕获能力和整体检测性能。这种设计巧妙地结合了注意力机制的优势,有效增强了模型对目标…

python实现word转html

目录 使用mammoth库 使用spire.doc库 使用mammoth库 mammoth库支持将word转为HTML和markdown格式的文件。 import mammothdef word_html(word_file):html_save_name fr{word_file.split(.)[0]}.htmlwith open(word_file, rb) as f:data mammoth.convert_to_html(f)with o…

数据挖掘与机器学习(part 9) 规则挖掘Rules Mining关联规则(Association Rules) Apriori算法

基于规则的分类器&#xff1a;Classification using rule based classifier 互斥规则&#xff08;Mutually exclusive rules&#xff09;&#xff1a; 分类器包含互斥规则&#xff0c;如果这些规则彼此独立。 每条记录最多被一条规则覆盖。 穷尽规则&#xff08;Exhaustive …