C#架构设计,基于SqlSugar的CodeFirst一套数据库访问交互框架设计,一行代码配置假删除

本文主要是介绍C#架构设计,基于SqlSugar的CodeFirst一套数据库访问交互框架设计,一行代码配置假删除,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SqlSugar是一个基于.NET的国产ORM(对象关系映射)库,它提供了简单而强大的方式来操作数据库。

以下是SqlSugar的一些关键特性和简介:

  1. SqlSugar是一个基于.NET的ORM(对象关系映射)库,它提供了简单而强大的方式来操作数据库。以下是SqlSugar的一些关键特性和简介:

  2. 支持多数据库类型:
    SqlSugar支持多种数据库类型,包括但不限于SqlServer、MySql、SQLite、Oracle、PostgreSQL等。

  3. 轻量级且高性能: SqlSugar设计为轻量级且性能出色。它使用了一些优化技术,例如缓存机制和SQL优化,以提供高效的数据库访问性能。

  4. Lambda表达式:
    SqlSugar允许使用Lambda表达式进行数据库查询,这样可以更直观地构建查询条件,减少了手写SQL语句的需要。

  5. 支持事务操作: SqlSugar提供了简单的事务操作,允许你在一组数据库操作中实现事务。

  6. 强大的模型缓存: SqlSugar具有一个内置的模型缓存系统,可以提高反射性能,从而提高数据访问速度。

  7. 面向对象的设计: SqlSugar采用面向对象的设计理念,使得开发者可以使用对象来表示数据库表,简化了数据操作。

  8. 支持分页: SqlSugar内置了对分页操作的支持,方便处理大量数据的分页显示。

  9. CodeFirst和DbFirst:
    SqlSugar支持CodeFirst(基于代码的数据库设计)和DbFirst(基于数据库的代码生成)两种开发模式,根据项目需要选择适合的方式。

框架结构
在这里插入图片描述

首先介绍下CodeFirst的方式生成代码:

注意我们需要先定义好数据库

using SqlSugar;namespace DBFirst
{public class AutoCreateModel{public void Create(){Console.WriteLine("Start Create!");var db = SqlClient.Instance;db.DbFirst.IsCreateAttribute().CreateClassFile("D:\\demo", "Models");Console.WriteLine("Success!");}}
}

这里配置数据库属性,配置假删除,即逻辑删除,实际数据库中会放置一个标志字段

using SqlSugar;namespace DBFirst
{public class SqlClient{private static ISqlSugarClient? instance;private static readonly object lockObject = new object();// 私有构造函数,防止外部直接实例化private SqlClient(){}public static ISqlSugarClient Instance{get{if (instance == null){lock (lockObject){if (instance == null){string connectionString = "Server=locahost;Database=odata;uid=root;pwd=12345";// 初始化SqlSugar客户端instance = new SqlSugarClient(new ConnectionConfig(){ConnectionString = connectionString,DbType = DbType.MySql,IsAutoCloseConnection = true,InitKeyType = InitKeyType.Attribute},instance =>{//逻辑删除配置,配置后,查询都是根据逻辑字段判断instance.QueryFilter.Add(new TableFilterItem<ILogicDeleteModel>(it => it.DeleteState == false));});}}}return instance;}}}
}

定义个逻辑删除字段接口,所有model继承这个接口

namespace DBFirst
{public interface ILogicDeleteModel{bool DeleteState { get; set; }}
}

接口定义常用的操作:
在这里插入图片描述
然后再server中去实现

在这里插入图片描述
所有你定义的表继承这个默认Service之后立刻实现所有的数据库操作方式

依赖注入所有的Service
在这里插入图片描述
快速使用下试试:
在这里插入图片描述
开源代码:https://gitee.com/zuiyuewentian/sql-sugar-test

这篇关于C#架构设计,基于SqlSugar的CodeFirst一套数据库访问交互框架设计,一行代码配置假删除的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/626401

相关文章

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

C# Where 泛型约束的实现

《C#Where泛型约束的实现》本文主要介绍了C#Where泛型约束的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用的对象约束分类where T : structwhere T : classwhere T : ne

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.