SqlSugar简单使用记录(一)

1,981 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情

对于.NET开发者来说,ORM框架一般都会采用EFCore,但我并不喜欢用,其实这个官方的ORM已经被优化的很好了,比EF也轻量了很多,但他的数据迁移不好用,而且还会生成一堆文件,配置起来也一大堆代码。所以尝试找一款新的ORM代替它,于是就找到了SqlSugar!

我的需求很简单:

  • 简单易用、性能不要太拉胯(能保证中小型项目跑流程即可)
  • 文档要齐全,这个对后期问题排查太重要了
  • 用户广泛,这样公开的论坛资料博客才会更多
  • 能自动 创建/更新 数据库/表 .....
    SqlSugar基本都满足了,那就开始试用

首先创建一个WebApi项目

image.png

选择.NET5.0框架(6.0也可以,我本地是vs2019,不支持,所以只能选择5.0了)

image.png

添加NuGet包:SqlSugarCore

image.png

创建一个实体类(用于创建数据表)

可以使用vs快捷键 添加新项:Shift + Alt + C

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace SugarTest
{
    /// <summary>
    /// 学生表
    /// </summary>
    public class Students
    {
        public string Id { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }

        public string Happy { get; set; }
    }
}

项目目录下创建一个cs文件,用于放置SqlSugar初始化配置代码

using Microsoft.Extensions.DependencyInjection;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace SugarTest
{
    public class SqlSugarSetup
    {
        public static SqlSugarClient db
        {
            get
            {
                return new SqlSugarClient(new ConnectionConfig()
                {
                    ConnectionString = "xxxxxxx",//数据库连接字符串
                    DbType = DbType.SqlServer,//DbType支持Mysql、SqlServer、Sqlite、Oracle、PostgreSQL等多种数据库
                    IsAutoCloseConnection = true,//自动释放
                });
            }
        }

        public static void Init(IServiceCollection services)
        {
            //自动创建数据库
            db.DbMaintenance.CreateDatabase();//如果不存在创建数据库

            //采用Codefirst方式
            //设置varchar类型 字段默认长度为200
            //也就是string类型的字段长度给一个默认长度,节省数据空间
            //如果有多张表需要初始化,上句可重复写,或者批量初始化(后面会写到...)
            db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(Students));//创建数据表

            //单例注入,方便控制器或其他类中使用数据库实例对象
            services.AddSingleton<ISqlSugarClient>(db);
        }
    }
}

然后到Startup.cs中的ConfigureServices调用一下即可

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    
    //调用一下,即可完成初始化工作
    SqlSugarSetup.Init(services);
}

好了,整体工作完成,现在只要运行项目即可自动创建数据库和表

F5运行

由于没有写任何页面,所以可以用数据库管理工具,连接指定数据库,然后查看数据库表生成情况

image.png

为了项目完整性,这里写一个控制器,简单添加点数据,然后查询一下

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using SqlSugar;

namespace SugarTest.Controllers
{
    /// <summary>
    /// 学生 控制器
    /// </summary>
    [ApiController]
    [Route("api/[controller]/[action]")]//路由配置,方便调用
    public class StudentController : ControllerBase
    {
        public readonly ISqlSugarClient db;
        
        //这里采用构造注入的方式,将数据库实例对象注入进来,方便在各个方法中使用
        public StudentController(ISqlSugarClient _db)
        {
            db = _db;
        }
        
        /// <summary>
        /// 查询
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public List<Students> GetInfo()
        {
            return db.Queryable<Students>().ToList();
        }

        /// <summary>
        /// 批量插入
        /// </summary>
        /// <returns></returns>
        [HttpPut]
        public List<Students> Add()
        {
            var list = new List<Students>()
            {
                new Students{Name="Jack",Age=25,Happy="Coding"},
                new Students{Name="Bob",Age=25,Happy="PlayBall"},
                new Students{Name="Mark",Age=25,Happy="Sleep"}
            };
            db.Insertable(list).ExecuteCommand();//这里返回的是受影响的行数,插入成功 累加1

            return GetInfo();//直接调用查询方法
        }
    }
}

运行项目,调用 api

image.png

执行过程 生成的sql

image.png