当前位置: 首页 > news >正文

Restaurants WebAPI(一)—— clean architecture


文章目录

  • 项目地址
  • 一、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

相关文章:

Restaurants WebAPI(一)—— clean architecture

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

c++数据结构算法复习基础--13--基数算法

基数排序 - 桶排序 时间复杂度 O(n*d) – d为数据的长度 每次比较一位&#xff08;个位、十位。。。&#xff09;&#xff0c;所以取值范围就为0-9。 根据该特点&#xff0c;设计桶的概念 – 0号桶、1号桶… 1、思想 1&#xff09;找出最长的数字&#xff0c;确定要处理的…...

ntp设置

NTP&#xff08;Network Time Protocol&#xff09;简介 ntp授时定义 - NTP是一种用于在计算机网络中同步时间的协议。它确保网络中的各个设备&#xff08;如服务器、客户端计算机、网络设备等&#xff09;的时钟保持准确一致。 - 其工作原理是通过分层的时钟源体系&#xff…...

如何在Java中使用封装好的API接口?

1.选择合适的 HTTP 库 在 Java 中&#xff0c;可以使用多种库来进行 HTTP 请求。java.net.HttpURLConnection是 Java 标准库中的类&#xff0c;能够满足基本的 HTTP 请求需求&#xff0c;但使用起来相对复杂。另外&#xff0c;还有一些第三方库&#xff0c;如OkHttp和Apache H…...

AWS EKS 相关错误修复 - remote error: tls: internal error - CSR pending

现象 升级aws eks的kubernetes版本后执行kubectl logs 或者kubectl exec相关命令会出现报错 remote error: tls: internal error 执行kubectl get csr -A查看csr出现一直pending的状态,并且出现问题的pod都在新创建出来的eks node节点上 kubectl get csr -A NAME AGE …...

浏览器事件循环机制

JavaScript 是单线程运行的语言&#xff0c;同一时间只能执行一个任务。单线程意味着&#xff1a; 如果某个任务执行时间过长&#xff0c;后续任务会被阻塞。 同步任务和异步任务的调度需要一种机制来管理。 为了解决这个问题&#xff0c;事件循环应运而生&#xff0c;它可以…...

ubuntu22.04编译安装Opencv4.8.0+Opencv-contrib4.8.0教程

本章教程,主要记录在Ubuntu22.04版本系统上编译安装安装Opencv4.8.0+Opencv-contrib4.8.0的具体过程。 一、下载opencv和opencv-contrib包 wget https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip wget https://github.com/opencv/opencv_contrib/archive/refs/…...

概率论得学习和整理27:关于离散的数组 随机变量数组的均值,方差的求法3种公式,思考和细节。

目录 1 例子1&#xff1a;最典型的&#xff0c;最简单的数组的均值&#xff0c;方差的求法 2 例子1的问题&#xff1a;例子1只是1个特例&#xff0c;而不是普遍情况。 2.1 例子1各种默认假设&#xff0c;导致了求均值和方差的特殊性&#xff0c;特别简单。 2.2 我觉得 加权…...

【排序算法】——插入排序

目录 前言 简介 基本思想 1.直接插入排序 2.希尔排序 代码实现 1.直接插入排序 2.希尔排序 总结 1.时空复杂度 2.稳定性 尾声 前言 排序(Sorting) 是计算机程序设计中的一种重要操作&#xff0c;它的功能是将一个数据元素&#xff08;或记录&#xff09;的任意序列&…...

MySQL的并发控制与MVCC机制深度解析

目录 1. MySQL中的并发问题2. 数据库的隔离级别3. MVCC&#xff08;多版本并发控制&#xff09;机制3.1 MVCC的实现原理3.2 Read View详解3.3 当前读与快照读 4. MVCC在不同隔离级别下的工作方式5. MVCC解决幻读问题6. MVCC的优缺点优点&#xff1a;缺点&#xff1a; 7. MVCC在…...

Qt编译MySQL数据库驱动

目录 Qt编译MySQL数据库驱动 测试程序 Qt编译MySQL数据库驱动 &#xff08;1&#xff09;先找到MySQL安装路径以及Qt安装路径 C:\Program Files\MySQL\MySQL Server 8.0 D:\qt\5.12.12 &#xff08;2&#xff09;在D:\qt\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql下…...

uniapp地址类 方法

关于点击没反应 manifest.json 检查是否添加了对应的权限 /* 小程序特有相关 */"mp-weixin" : {"appid" : "wxc481f10754f1d9df","setting" : {"urlCheck" : false,"es6" : true,"postcss" : true,&qu…...

使用Idea自带的git功能进行分支合并

文章目录 1.背景描述2.分支切换3.分支合并的具体操作4.将在local环境下&#xff0c;从dev合并到qas分支上的代码&#xff0c;推送到远端 1.背景描述 目前在开发的当前项目有四个分支&#xff0c;master(主分支)、pre(预生产分支)、qas(测试分支)、dev(开发分支)&#xff1b; …...

酷盾安全:Edge SCDN边缘安全内容分发网络

在当今数字化迅猛发展的时代&#xff0c;互联网内容分发的高效与安全成为了企业不可忽视的重要课题。为了满足这一需求&#xff0c;酷盾安全推出了创新的Edge Secure Content Delivery Network&#xff08;Edge Scdn&#xff09;解决方案&#xff0c;它不仅融合了分布式DDoS防护…...

H5 中 van-popup 的使用以及题目的切换

H5 中 van-popup 的使用以及题目的切换 在移动端开发中&#xff0c;弹窗组件是一个常见的需求。vant 是一个轻量、可靠的移动端 Vue 组件库&#xff0c;其中的 van-popup 组件可以方便地实现弹窗效果。本文将介绍如何使用 van-popup 实现题目详情的弹窗展示&#xff0c;并实现…...

Liinux下VMware Workstation Pro的安装,建议安装最新版本17.61

建议安装最新版本17.61&#xff0c;否则可能有兼容性问题 下载VMware Workstation安装软件 从官网网站下载 https://support.broadcom.com/group/ecx/productdownloads?subfamilyVMwareWorkstationPro 选择所需版本 现在最新版本是17.61&#xff0c;否则可能有兼容性问题…...

WebRTC服务质量(05)- 重传机制(02) NACK判断丢包

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…...

修改ubuntu apt 源及apt 使用

视频教程:修改ubuntu apt 源和apt 使用方法_哔哩哔哩_bilibili 1 修改apt源 1.1 获取阿里云ubuntu apt 源 https://developer.aliyun.com/mirror/ubuntu?spma2c6h.13651102.0.0.3e221b11mqqLBC 1.2 修改apt 源 vim /etc/apt/sources.list deb https://mirrors.aliyun.com/ub…...

深入解析 `DataFrame.groupby` 和 `agg` 的用法及使用场景

深入解析 DataFrame.groupby 和 agg 的用法及使用场景 1. groupby 的基本用法语法&#xff1a;示例&#xff1a; 2. agg 的基本用法语法&#xff1a;示例&#xff1a; 3. first、sum、lambda 的用法3.1 first示例&#xff1a; 3.2 sum示例&#xff1a; 3.3 lambda示例&#xff…...

MySQL 的锁

MySQL有哪些锁?各种锁的作用与使用场景全局锁表级锁表锁元素锁意向锁AUTO-INC 锁 行级锁记录锁间隙锁临键锁 其他共享锁排他锁乐观锁悲观锁 MySQL有哪些锁? 全局锁表级锁 a. 表锁 b. 元素锁 c. 意向锁 d. AUTO-INC 锁行级锁 a. 记录锁 b. 间隙锁 c. 临键锁 各种锁的作用与使…...

cool-admin(midway版)前端权限指令:自定义指令实现权限控制的完整指南

cool-admin(midway版)前端权限指令&#xff1a;自定义指令实现权限控制的完整指南 【免费下载链接】cool-admin-midway &#x1f525; cool-admin(midway版)一个很酷的后台权限管理框架&#xff0c;模块化、插件化、CRUD极速开发&#xff0c;永久开源免费&#xff0c;基于midwa…...

第6章 数据类型转换-6.1 转换为整数

通过使用int()函数可以将仅含有数字的字符串或浮点数转换为十进制整数。其语法格式如下&#xff1a;int([x [, base]])其中&#xff0c;参数x为可选参数&#xff0c;表示仅含有数字的字符串或浮点数&#xff0c;如果省略该参数&#xff0c;则该函数返回0&#xff1b;参数base为…...

github上传项目代码手把手运行,包含部分坑

git config --global init.defaultBranch main 自定义默认分支名称&#xff0c;远程分支是main git init&#xff08;默认是master&#xff09; git config --global init.defaultBranch main&#xff08;以后默认使用main&#xff09; git push -f origin main (强制覆盖…...

Radiant Player媒体键集成:揭秘硬件控制背后的技术

Radiant Player媒体键集成&#xff1a;揭秘硬件控制背后的技术 【免费下载链接】radiant-player-mac :notes: Turn Google Play Music into a separate, beautiful application that integrates with your Mac. 项目地址: https://gitcode.com/gh_mirrors/ra/radiant-player-…...

Apache Paimon面试通关秘籍-快照机制深度解析

1. 快照机制&#xff1a;Paimon的时光机原理 第一次接触Paimon的快照功能时&#xff0c;我脑海中浮现的是《哆啦A梦》里的时光机——它能带你回到任意时间点查看数据的历史状态。这个看似简单的功能背后&#xff0c;其实藏着Paimon最核心的设计哲学。 快照本质上就是数据表在某…...

如何快速搭建你的专属Galgame社区:TouchGal一站式解决方案完整指南

如何快速搭建你的专属Galgame社区&#xff1a;TouchGal一站式解决方案完整指南 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 你是否…...

Kandinsky-5.0-I2V-Lite-5s从零开始:非技术用户也能3分钟生成首个5秒动态视频

Kandinsky-5.0-I2V-Lite-5s从零开始&#xff1a;非技术用户也能3分钟生成首个5秒动态视频 1. 认识Kandinsky-5.0-I2V-Lite-5s Kandinsky-5.0-I2V-Lite-5s是一款专为普通用户设计的轻量级图生视频工具。它的最大特点是简单易用——你只需要准备一张图片和一句话&#xff0c;就…...

从‘歪图’到精准底图:ENVI几何校正实战避坑与精度提升指南

从‘歪图’到精准底图&#xff1a;ENVI几何校正实战避坑与精度提升指南 当你在山区项目中打开刚获取的遥感影像时&#xff0c;那些本该笔直的道路却像蛇形般扭曲&#xff0c;原本规整的农田边界变成了抽象画作——这就是未经几何校正的"歪图"给科研工作者带来的日常困…...

ESP8266上玩转MicroPython:四角按钮控制LED的3种接线方案对比

ESP8266上玩转MicroPython&#xff1a;四角按钮控制LED的3种接线方案对比 在物联网和智能硬件开发中&#xff0c;ESP8266凭借其出色的性价比和丰富的功能接口&#xff0c;成为了创客和开发者的首选。而MicroPython的出现&#xff0c;更是让Python开发者能够轻松上手硬件编程。本…...

Fluent后处理效率翻倍:用View功能建立你的专属仿真报告视角库

Fluent后处理效率翻倍&#xff1a;用View功能建立你的专属仿真报告视角库 在仿真工程师的日常工作中&#xff0c;最耗时的往往不是计算本身&#xff0c;而是后处理阶段——反复调整视角、截图、标注、排版&#xff0c;只为生成一份清晰直观的报告。我曾参与过一个散热器优化项目…...