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

发布时间:2024年01月20日

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

文章来源:https://blog.csdn.net/zuiyuewentian/article/details/135703900
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。