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

最近更新

  1. TCP协议是安全的吗?

    2024-01-20 13:58:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-20 13:58:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-20 13:58:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-20 13:58:01       18 阅读

热门阅读

  1. x86 和 x64 arm的区别

    2024-01-20 13:58:01       34 阅读
  2. JUnit 5 单元测试框架

    2024-01-20 13:58:01       35 阅读
  3. C Primer Plus(第六版)12.9 编程练习 第2题

    2024-01-20 13:58:01       27 阅读
  4. C语言变量和全局变量能否重名?

    2024-01-20 13:58:01       34 阅读
  5. 代码随想录第22天| 二叉树

    2024-01-20 13:58:01       36 阅读
  6. 算法训练营Day36(贪心5)

    2024-01-20 13:58:01       38 阅读
  7. git format用法学习

    2024-01-20 13:58:01       33 阅读
  8. thinkphp6 模糊查找json下的字段值

    2024-01-20 13:58:01       29 阅读
  9. 【回溯】79. 单词搜索

    2024-01-20 13:58:01       34 阅读