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

  开源博客项目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.mzph.cn/news/90465.shtml

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

相关文章

基于FFmpeg+SDL的视频播放器的制作

基于FFmpegSDL的视频播放器的制作 基于FFmpegSDL的视频播放器的制作实验1实验2实验3实验4基本练习进阶练习 实验5实验6 基于FFmpegSDL的视频播放器的制作 雷霄骅博士的课程。 课程链接:https://blog.csdn.net/leixiaohua1020/article/details/47068015 初学 FFmp…

MongoDB索引

索引支持在MongoDB中高效执行查询。如果没有索引,MongoDB必须扫描集合中的每个文档才能返回查询结果。如果查询存在适当的索引,MongoDB将使用该索引来限制它必须扫描的文档数。 尽管索引提高了查询性能,但添加索引对写入操作的性能有负面影响…

DataX

序言 弄过了Chunjun 过来搞搞DataX3.0 https://github.com/alibaba/DataXhttps://github.com/alibaba/DataX/blob/master/introduction.mdhttps://github.com/alibaba/DataX/blob/master/userGuid.md 简介 ​ DataX 是一个异构数据源离线同步工具,致力于实现包…

如何使用ArcGIS Pro直接获取道路中心线

以前使用ArcGIS获取道路中心线,需要先将面要素转换为栅格再获取中心线,现在我们可以通过ArcGIS Pro直接获取道路中心线,这里为大家介绍一下获取方法,希望能对你有所帮助。 新建地理数据库 在存储数据的文件夹上点击右键&#xff…

【C++】STL之list深度剖析及模拟实现

目录 前言 一、list 的使用 1、构造函数 2、迭代器 3、增删查改 4、其他函数使用 二、list 的模拟实现 1、节点的创建 2、push_back 和 push_front 3、普通迭代器 4、const 迭代器 5、增删查改(insert、erase、pop_back、pop_front) 6、构造函数和析构函数 6.1、默认构造…

CSS box-shadow阴影

1、语法 box-shadow: h-shadow v-shadow blur spread color inset; 值描述h-shadow必需的。水平阴影的位置。允许负值v-shadow必需的。垂直阴影的位置。允许负值blur可选。模糊距离spread可选。阴影的大小color可选。阴影的颜色。在CSS颜色值寻找颜色值的完整列表inset可选。…

【Linux】Linux远程访问Windows下的MySQL数据库

1.建立Windows防火墙规则 首先需要开放windows防火墙,针对3306端口单独创建一条规则,允许访问。 打开windows安全中心防火墙与保护,点击高级设置 进入之后,点击入站规则,新建一条规则 新建端口入站规则 端口填写330…

使用vue-cli搭建SPA项目

目录 引言 什么是SPA? Vue CLI 是什么? 步骤1:安装 Vue CLI 为什么选择 Vue CLI 作为项目搭建工具 安装vue-cli 步骤2:创建新的 Vue 项目 创建成功后的项目结构 步骤3:项目结构概述 vue项目结构说明 步骤4&a…

Vue中前端导出word文件

很多时候在工作中会碰到完全由前端导出word文件的需求,因此特地记录一下比较常用的几种方式。 一、提供一个word模板 该方法提供一个word模板文件,数据通过参数替换的方式传入word文件中,灵活性较差,适用于简单的文件导出。需要…

论文笔记(整理):轨迹相似度顶会论文中使用的数据集

0 汇总 数据类型数据名称数据处理出租车数据波尔图 原始数据:2013年7月到2014年6月,170万条数据 ICDE 2023 Contrastive Trajectory Similarity Learning with Dual-Feature Attention 过滤位于城市(或国家)区域之外的轨迹 过…

Idea引入thymeleaf失败解决方法

报错 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback.Fri Sep 29 09:42:00 CST 2023 There was an unexpected error (typeNot Found, status404). 原因:html没有使用thymeleaf 首先要引入…

Linux Day18 TCP_UDP协议及相关知识

一、网络基础概念 1.1 网络 网络是由若干结点和连接这些结点的链路组成,网络中的结点可以是计算机,交换机、 路由器等设备。 1.2 互联网 把多个网络连接起来就构成了互联网。目前最大的互联网就是因特网。 网络设备有:交换机、路由器、…

【MATLAB源码-第38期】基于OFDM的块状导频和梳状导频误码率性能对比,不同信道估计方法以及不同调制方式对比。

1、算法描述 块状导频和梳状导频都是用于无线通信系统中信道估计的方法。 块状导频: 定义: 在频域上,块状导频是连续放置的一组导频符号。这意味着所有的导频符号都集中在一个短的时间段内发送。 优点: 对于时间选择性信道&#…

Python 打印素数

"""打印素数介绍:素数是指只有两个正因数(1和它本身)的自然数,而且必须大于1。例如:2、3、5、7、11、13、17、19、23、29等等都是素数。小于2的数不是素数,因为它没有两个正因数。例如&…

基于JAVA+SpringBoot的新闻发布平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着科技的飞速发展和…

IO流 之 缓冲流(字节缓冲流和字符缓冲流)

缓冲流对原始流进行了包装,以提高原始流读写数据的性能。 字节缓冲流(BufferedInputStream和BufferedOutputStream) 字节缓冲流在内存中提供了一个默认为8kb的区域,用于缓冲,当流开始时,先读取一个8kb的内…

skywalking入门

参考: https://www.jianshu.com/p/ffa7ddcda4ab 参考: https://developer.aliyun.com/article/1201085 skywalking(APM) 调用链路分析以及应用监控分析工具 Skywalking主要由三大部分组成:agent、collector、webapp-…

十六.镜头知识之工业镜头的质量判断因素

十六.镜头知识之工业镜头的质量判断因素 文章目录 十六.镜头知识之工业镜头的质量判断因素1.分辨率(Resolution)2.明锐度(Acutance)3.景深(DOF):4. 最大相对孔径与光圈系数5.工业镜头各参数间的相互影响关系5.1.焦距大小的影响情况5.2.光圈大小的影响情况5.3.像场中…

CISSP学习笔记:人员安全和风险管理概念

第二章 人员安全和风险管理概念 2.1 促进人员安全策略 职责分离: 把关键的、重要的和敏感工作任务分配给若干不同的管理员或高级执行者,防止共谋工作职责:最小特权原则岗位轮换:提供知识冗余,减少伪造、数据更改、偷窃、阴谋破坏和信息滥用的风险&…

快速幂矩阵-python

看了大神讲解,理论在这里:快速幂算法(全网最详细地带你从零开始一步一步优化)-CSDN博客 例题:求整数 base 的 整数 power 次方,对整数 num_mod 取幂。 python 代码如下: import timedef norm…