NET中使用SQLSugar操作sqlserver数据库

news/2024/5/19 21:30:31 标签: .netcore

目录

一、SqlSugar是什么?

二、迁移和建表

1.建立实体

2.创建上下文类

3.在Program中添加SqlSugar服务

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

三、简单实现CURD功能

总结


一、SqlSugar是什么?

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

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

二、迁移和建表

安装包: SqlSugarCore 

1.建立实体

代码如下(示例):

   [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.创建上下文类

代码如下(示例):

 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服务

代码如下(示例):

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.在控制器中注入上下文类

代码如下(示例):

    [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功能

代码如下(示例):

 [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


http://www.niftyadmin.cn/n/5286636.html

相关文章

关于个人Git学习记录及相关

前言 可以看一下猴子都能懂的git入门&#xff0c;图文并茂不枯燥 猴子都能懂的git入门 学习东西还是建议尽可能的去看官方文档 权威且详细 官方文档 强烈建议看一下GitHub漫游指南及开源指北&#xff0c;可以对开源深入了解一下&#xff0c;打开新世界的大门&#xff01; …

FPGA-AMBA协议、APB协议、AHB规范、AXI4协议规范概述及它们之间的关系

FPGA-AMBA协议、APB协议、AHB协议、AXI&#xff14;协议规范概述 笔记记录&#xff0c;AMBA协议、APB协议、AHB规范、AXI&#xff14;协议规范概述&#xff0c;只是概述描述&#xff0c;具体详细的协议地址传输、数据传输等内容将在下一章节详细说明。 文章目录 FPGA-AMBA协议…

Web前端框架全景:流行选择与技术趋势

一、引言 随着互联网的飞速发展&#xff0c;Web应用已经渗透到我们生活的方方面面。为了满足用户对Web应用日益增长的需求&#xff0c;开发者们需要更加高效、灵活和可维护的开发工具。Web前端框架应运而生&#xff0c;它们为开发者提供了一套完整的解决方案&#xff0c;帮助开…

BI 商业数据分析能够给企业带来什么改变?

时下&#xff0c;随着中国企业数据整合应用的意识不断提高&#xff0c;BI 商业数据分析的应用驶入飞速发展的“快车道”。BI 商业智能利用数据分析技术与业务场景联系起来&#xff0c;通过一系列思维方法、指标体系及工具模型来支持市场分析、产品优化、客户洞察&#xff0c;从…

使用Windi CSS(基于vue-cli)

1、先创建vue项目 利用脚手架vue-cli创建&#xff0c;根据需求设置vue版本、babel等&#xff0c;无特别要求直接用默认的vue2或vue3就行 vue create 项目名 2、运行vue项目&#xff0c;利用vue-cli安装Windi CSS 官网指导&#xff1a;Vue CLI 集成 | Windi CSS 我的经历&a…

Halo多博客备份,同时备份redis与mysql,将备份文件上传到百度云

代码&#xff1a;https://github.com/loks666/py_tools 写在前面 我的服务器运行了多个halo博客&#xff0c;都在同一个域名下&#xff0c;只是用前缀区分&#xff0c;所以代码中我也是使用前缀区分的&#xff0c;使用了list元祖中包含了多个halo站点信息&#xff0c;记得在代…

电路设计(7)——窗口比较器的multism仿真

1.功能设计 构建一个窗口比较器的电路&#xff0c;在输入电压大于3.5v&#xff0c;小于0.8v时&#xff0c;蜂鸣器报警&#xff0c;输入电压在0.8v到3.5v之间时&#xff0c;不报警。 整体电路如下&#xff1a; 2.设计思路 在输入端&#xff0c;采取电阻分压的方式&#xff0c;输…

什么是数据分析思维

参考 一文学会如何做电商数据分析&#xff08;附运营分析指标框架&#xff09; 电子商务该如何做数据分析&#xff1f;如何数据分析入门&#xff08;从各项指标表象进入&#xff09; https://www.processon.com/outline/6589838c3129f1550cc69950 数据分析步骤 什么是数据分析…