NET中使用SQLSugar操作sqlserver数据库

目录

一、SqlSugar是什么?

二、迁移和建表

1.建立实体

2.创建上下文类

3.在Program中添加SqlSugar服务

4.在控制器中注入上下文类

三、简单实现CURD功能

总结


一、SqlSugar是什么?

SqlSugar是一款老牌 .NET 开源ORM框架。

主要特点:简单易用、功能齐全、高性能、轻量级、服务齐全、支持全自动分表组件,SAAS分库,大数据处理的ORM。

二、迁移和建表

安装包: SqlSugarCore

1.建立实体

代码如下(示例):

cs 复制代码
   [SugarTable("T_Book")]//设置表名为TableName,如果不设置取类名为表名
    public class Book
    {

        [SugarColumn(IsIdentity = true, IsPrimaryKey = true)]
        public int Id { get; set; }

        [SugarColumn(Length =50)]//设置长度
        public string AuthorName { get; set; }
        public float?Price { get; set; }

        [SugarColumn(IsNullable = true)]//可以为NULL
        public DateTime PubTime { get; set; }
        public string Title { get; set; }
    }

2.创建上下文类

代码如下(示例):

cs 复制代码
 public class SqlSugarContext
    {

        public readonly ISqlSugarClient db;

        public SqlSugarContext(ISqlSugarClient db)
        {
            this.db = db;
        }

        public void CreateTable()
        {
            //建库 如果不存在创建数据库,存在不会重复创建
            db.DbMaintenance.CreateDatabase();
            //建表
            db.CodeFirst.SetStringDefaultLength(100).//设置默认字符串类型的字段长度
                BackupTable().InitTables(new Type[] //支持多表创建
            {
                 typeof(Book),
            });         
        }   
     }

3.在Program中添加SqlSugar服务

代码如下(示例):

cs 复制代码
builder.Services.AddHttpContextAccessor();
//注册SqlSugar用AddScoped
builder.Services.AddScoped(sp => new SqlSugarContext(
    new SqlSugarClient(new ConnectionConfig()
    {
        ConnectionString = builder.Configuration.GetConnectionString("SqlServer:Connection"), //数据库连接串
        DbType = DbType.SqlServer,      //数据库类型
        IsAutoCloseConnection = true, //自动释放
        MoreSettings = new ConnMoreSettings()
        {
            SqlServerCodeFirstNvarchar = true,//建表字符串默认Nvarchar
        }
    },
    db =>
    {
        db.Aop.OnLogExecuting = (sql, pars) =>
        {
            Console.WriteLine(sql);//生成执行Sql语句
        };
    }

    )    
));

4.在控制器中注入上下文类

代码如下(示例):

cs 复制代码
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class InitializationController : ControllerBase
    {

        public readonly SqlSugarContext _context;
        public InitializationController(SqlSugarContext context) { 
        
         this._context = context;
        }

        /// <summary>
        /// 创建表
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public IActionResult CreateTable( )
        {
            _context.CreateTable();           
            return Ok("执行成功!");
        }
    }

运行项目,执行创建表的接口

再去数据库看,库和表都建立好了

如果想增加新的字段、修改字段,建新实体再次执行该接口即可

三、简单实现CURD功能

代码如下(示例):

cs 复制代码
 [Route("api/[controller]/[action]")]
    [ApiController]
    public class BookController : ControllerBase
    {

        public readonly SqlSugarContext _context;
        public BookController(SqlSugarContext context) { 
        
         this._context = context;
        }

        /// <summary>
        /// 新增
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public IActionResult InsertBook(Book  req)
        {
            int result= _context.db.Insertable<Book>(req).ExecuteCommand();
            return Ok($"成功插入{result}条");
        }

        /// <summary>
        /// 编辑
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public IActionResult UpdateBook(Book req)
        {
            int result = _context.db.Updateable<Book>(req).ExecuteCommand();
            return Ok($"成功修改{result}条");
        }

        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult DeleteBook(int Id)
        {

            int result = _context.db.Deleteable<Book>().In(Id).ExecuteCommand();
            return Ok($"成功删除{result}条");
        }

        /// <summary>
        /// 查询
        /// </summary>
        /// <param name="pagenumber"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult QueryBook(int pagenumber=1, int pageSize=20) {
            int totalCount = 0;
            //单表分页
            var page = _context.db.Queryable<Book>().ToPageList(pagenumber, pageSize, ref totalCount);
            var data = new
            {
                page,
                totalCount
            };
            return Ok(data);
        }
    }   

总结

SqlSugar比起Migrationn数据迁移的方式建库建表,简化很多。ISqlSugarClient封装了常用的CURD功能,并且支持批量操作,在性能方面也不错,是很容易上手的一款orm框架。

更多使用方法查看官方文档

https://www.donet5.com/Home/Doc

相关推荐
AI题库12 小时前
1.3 ABP MVC开发环境搭建指南:从零开始快速上手
asp.net·mvc·.net·.netcore
时光追逐者2 天前
ASP.NET Core 依赖注入的三种服务生命周期
后端·c#·asp.net·.net·.netcore
武藤一雄3 天前
C# 中线程安全都有哪些
后端·安全·微软·c#·.net·.netcore·线程
csdn_aspnet3 天前
.NET 8 Web 应用、Web API 和 RabbitMQ
rabbitmq·.netcore·.net8
温暖的苹果4 天前
【.Net runtime】corehost(.NET 应用启动过程)
c#·.net·.netcore
csdn_aspnet4 天前
使用 Windows 客户端的 RabbitMQ Messaging for .NET 8 Web API 第 2 部分
windows·rabbitmq·.netcore·.net8
csdn_aspnet4 天前
使用 Windows 客户端的 RabbitMQ Messaging for .NET 8 Web API 第 1 部分
rabbitmq·.net·.netcore·.net8
csdn_aspnet5 天前
ASP.NET Core:创建并验证文档上的数字签名
.netcore·数字签名
喵叔哟9 天前
12.云平台部署
后端·.netcore
爱吃香蕉的阿豪9 天前
NET Core中ConcurrentDictionary详解:并发场景下的安全利器及服务端实践
安全·http·.netcore·高并发