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

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

http://www.kler.cn/a/444972.html

相关文章:

  • LLaMA-Factory 单卡3080*2 deepspeed zero3 微调Qwen2.5-7B-Instruct
  • 猫头虎分享:读孙凝晖院士《人工智能与智能计算的发展》有感
  • bestphp‘s revenge
  • 理解 EXPLAIN
  • *【每日一题 基础题】 [蓝桥杯 2023 省 B] 飞机降落
  • 现代控制理论——自由度
  • ABeam 德硕 | ABeam旗下艾宾信息技术开发(上海)有限公司大连分公司数交会之行全景回顾
  • 51c视觉~合集33
  • 【GESP】C++二级考试大纲知识点梳理, (4)流程图
  • metagpt中ActionNode的用法
  • 如何保证开源AI呼入机器人和AI呼出机器人的数据安全性?
  • 系统架构设计师 (论文范文 --- 论基于rest服务的web应用系统设计)
  • 解锁移动设备管理新技能-RayLink远程控制手机
  • 在Centos7上安装MySQL数据库 How to install MySQL on Centos 7
  • Android Compose list 下拉刷新、上拉加载更多
  • JS实现在线预览HTML文件
  • 分布式刚度编织,让可穿戴触觉更出色 ——Haptiknit
  • Visio——同一个工程导出的PDF文件大小不一样的原因分析
  • 深度学习笔记27_RNN实现阿尔茨海默病诊断(pytorch)
  • 基础2:值类型与右值引用
  • React和Three.js结合-React Three Fiber
  • 前端面经每日一题Day16
  • 华为ensp--BGP路径选择-AS_Path
  • 电力场景输电塔分割数据集labelme格式288张4类别
  • AI 在游戏领域的革命性技术
  • 人工智能 (AI) 模型的数据泄露问题