开源博客项目Blog .NET Core源码学习(3:数据库操作方式)

news2024/11/25 3:21:31

  开源博客项目Blog采用SqlSugar模块连接并操作数据库,本文学习并记录项目中使用SqlSugar的方式和方法。
  首先,数据库连接信息放在了App.Hosting项目的appsettings.json中DbConfig节,支持在DbConfig节配置多个数据库连接信息,以应用SqlSugar的多库用法。
  接着在App.Hosting项目的Program.cs文件中调用builder.Services.AddSqlSugarConnection函数,主要做了两件事:1)添加依赖注入ISqlSugarClient(对应返回SqlSugarClient实例对象);2)添加依赖注入IAppRepository(对应实体类型为AppRepository),这里调用AddScoped实现依赖注入(参考文献3)。

  IAppRepository接口为泛型接口,定义了数据库通用操作,主要包括基础(SugarQueryable、Insertable、Updateable、Deleteable等函数)、添加数据、修改数据、删除数据、查询数据等5大类函数。
  AppRepository泛型类为IAppRepository接口的实现类,作为整个项目中唯一的数据库通用操作类,其构造函数中传入ISqlSugarClient对象,AppRepository泛型类中的几乎所有函数实现都是调用的SqlSugar模块的方法。
  IAppService接口同样为泛型接口,定义了应用系统对象通用操作,主要是增删改查类的操作函数定义。AppService泛型类为IAppService接口的实现类,作为App.Application项目中的应用系统对象操作泛型类,其构造函数中传入IAppRepository对象,AppService泛型类中的函数实现都是调用IAppRepository对象的接口。
  App.Application项目中除AppService泛型类之外的类名结尾为Service的服务类(如ArticleService、BannerService等)均继承自AppService,且赋予其具体类。
  综上所述,开源博客项目Blog中的数据库操作相关的类的大致关系如下图所示(AppService子类太多,就没有全部列出来,都在App.Application项目内):

在这里插入图片描述
参考文献:
[1]https://gitee.com/miss_you/Blog
[2]https://www.donet5.com/Home/Doc
[3]https://blog.csdn.net/qtwitter/article/details/120343215

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1049792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二招牌战略洞察|王老吉与加多宝共同的课题:受困于第二招牌

王老吉频繁出新产品,却难觅结构性增长。王老吉曾经凭借凉茶单品反超可口可乐,却在2015年后面临增速下滑、市场规模逐年缩小的增长困境。事实上,王老吉所在的凉茶市场现已成为存量市场,甚至在不断激化的竞争中逐年萎缩。为了打破原…

Python 基于 Yolov8 + CPU 实现物体检测

目录 一、开发环境 二、安装 Python 基于 Yolov8 物体检测关联库 2.1 打开命令提示符(cmd)或终端,安装库 2.2 关联库安装过程遇到的问题 三、基于 Yolov8 物体检测代码实现(完整) 3.1 Yolov8 物体检测完整代码…

复杂链表的深度拷贝

给定一个链表,每个结点包含一个额外增加的随机指针,该指针可以指向链表中的任何结点 或空结点。 要求返回这个链表的深度拷贝。 我们想要拷贝这个指针就要考虑到 1.不仅仅拷贝出来的指针next是相同的,rondom也要相同 2.拷贝完后不改变原链表 …

智慧安防视频监控技术+AI智能分析算法助力美好乡村建设

上期我们聊到AI智能视频监控技术如何助力美好乡村建设?的相关方案,收到了很多粉丝的讨论与关注,视频监控只是乡村建设极其基础的一环,基于视频监控平台的AI智能算法,将人工智能融合到安防监控之中,才能让乡…

设计模式3、工厂方法模式 Factory Method

解释说明:定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类 抽象工厂(AbstractFactory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法…

2009-2018年31省份旅游收入(入境、国内、总收入;第三产值;GDP)

2009-2018年31省份旅游收入(入境、国内、总收入;第三产值;GDP) 1、时间:2009-2018年 2、指标: 汇率、入境旅游收入(万美元)、国内旅游收入(亿元&#xff0…

REASUNOS瑞森半导体-MOS管系列在服务器电源上的应用

一、前言 服务器电源是指使用在服务器上的电源(POWER),它和PC电源一样,都是一种开关电源,指能够将交流电转换为服务器所需直流电的电源。 服务器电源按照标准可以分为ATX电源和SSI电源等。ATX标准使用较为普遍&…

DAP-seq在植物转录因子的应用案例助你打通研究思路

众所周知,转录因子 (Transcription Factors, TFs)是指能够以序列特异性方式结合DNA并且调节转录的蛋白质。TF与特异性DNA序列结合调节转录,同时会和其它功能蛋白结合调控下游基因的转录和翻译过程,也会和增强子等其它顺式作用元件结合&#x…

MySQL基础篇-基本sql语句

目录 1.SQL分类 2.SQL-DDL 2.1 数据库操作 查询 创建 删除 使用某个数据库 2.2 数据表操作 创建表 查询表 修改表 3.SQL-DML(增删改) 3.1 插入 3.2 修改 3.3 删除 4.SQL-DQL(查) 4.1 基础查询 4.2 条件查询 4.3 聚合函数查询 4.4 分组查询 4.5 排序查询 …

在EXCEL中构建加载项之创建加载项的目的及规范要求

【分享成果,随喜正能量】一句南无阿弥陀佛,本是释迦牟尼佛所证的无上正等正觉法,洒在娑婆世界的众生海中,只为末世众生能够以信愿之心抓住此救命稻草,要知道今世人此生的处境,可能只剩这道要么极乐要么三涂…

C++之 lambda表达式

lambda表达式 lambda表达式概念lambda表达式语法lambda表达式底层原理 lambda表达式概念 我们在以往需要对某些数据进行排序时,比如一个数组,我们就需要用到sort()函数: int main() {int arr[] { 3,1,2,4,8,7,5,9 };//升序sort(arr, arr …

day36-xml

1.xml 1.1概述【理解】 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者: Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为…

使用 KerasCV YOLOv8 进行物体检测--附完整实现源码

YOLO 目标检测模型已应用于无数应用,从监控系统到自动驾驶车辆。但是,当在 KerasCV 框架下将 YOLOv8 的这种能力配对时会发生什么呢?最近,KerasCV 将著名的 YOLOv8 检测模型集成到其库中。在本文中,我们将探讨如何使用自定义数据集微调 YOLOv8。在此过程中,我们还将涵盖以…

wireshark of tshark tools v3.4.0版本 支持json

tshark(1) Install tshark (Wireshark) Ver.3.4.0 on CentOS7 --It must be "ps", "text", "pdml", "psml" or "fields". TCP 协议中的三次握手和四次挥手是 TCP 连接建立和关闭的过程。 三次握手 客户端向服务器发送 SYN…

Java自学(二)

目录 一、数组逆置(临时变量法) 二、基本类型和引用类型传参的区别 一、数组逆置(临时变量法) 二、基本类型和引用类型传参的区别 基本类型传参,形参一般不会改变实参。 形参是实参的一份数据拷贝,改变形…

Android12之解封装NuMediaExtractor::setDataSource过程(四十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

Python之网络协议

一、网络通信协议 国际标准化组织(ISO,即International Organization for Standardization)定义了网络通信协议的基本框架,被称为OSI(Open System Interconnect,即开放系统互联)模型。要制定通讯规则,内容会很多,比如要考虑A电脑如何找到B电脑,A电脑在发送信息给B电脑时…

十五、异常(3)

本章概要 捕获所有异常 多重捕获栈轨迹重新抛出异常精准的重新抛出异常异常链 捕获所有异常 可以只写一个异常处理程序来捕获所有类型的异常。通过捕获异常类型的基类 Exception,就可以做到这一点(事实上还有其他的基类,但 Exception 是所…

中秋节快乐

中秋节快乐,国庆节快乐

61从零开始学Java之处理大数字相关的类有哪些?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们知道,在现实世界里,实际上数字是有无穷个的,就比如0和1之间&a…