NET中使用SQLSugar操作sqlserver数据库

news2025/2/9 8:48:31

目录

一、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.coloradmin.cn/o/1335850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

天啦撸 超级麻烦的MySQL索引和数据引擎,快拿小本本记好

1 MySQL的索引 1.1 索引 定义&#xff1a; 索引是一个排序的列表&#xff0c;包含索引字段的值和其对应的行记录的数据所在的物理地址 ●索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址&#xff08;类似于C语言的链表通过…

边缘计算AI智能盒子的视频源必须是固定点监控摄像头吗?

边缘计算AI盒子的视频输入源&#xff0c;要求是RTSP或者GB28181&#xff0c;可以是固定点监控摄像头&#xff08;枪机、球机等&#xff09;&#xff0c;也可以是移动摄像头&#xff0c;例如执法记录仪、智能安全帽、布控球等&#xff0c;但由于RTSP输入要求摄像头有固定IP&…

贪吃蛇小游戏的代码实现之知识点铺垫篇

今天给大家介绍一个很经典的小游戏&#xff0c;它和扫雷在经典小游戏这方面可以说是旗鼓相当&#xff0c;它的名字就是贪吃蛇。贪吃蛇游戏最初为单机模式&#xff0c;后续又陆续推出团战模式、赏金模式、挑战模式等多种玩法。该游戏具体玩法是&#xff1a;用游戏把子上下左右控…

redis复习笔记01(小滴课堂)

高并发的必备两大“核技术”队列和缓存 介绍本地缓存和分布式缓存 Nosql介绍和Reidis介绍 Linux服务器源码安装Redis6和相关依赖 在路径下上传压缩包。 上传压缩包。 版本更新了&#xff0c;但这是临时的。 版本更新了。 解压压缩包&#xff1a; 重命名&#xff1a; 我们可以看…

网页乱码问题(edge浏览器)

网页乱码问题&#xff08;edge&#xff09; 文章目录 网页乱码问题&#xff08;edge&#xff09;前言一、网页乱码问题1.是什么&#xff1a;&#xff08;描述&#xff09;2.解决方法&#xff1a;&#xff08;针对edge浏览器&#xff09;&#xff08;1&#xff09;下载charset插…

JavaWeb的Servlet的入门和使用方法

1 什么是Servlet Servlet是Server Applet的简称&#xff0c;是用Java编写的是运行在 Web 服务器上的程序&#xff0c;它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet&#xff0c;可以收集来自网页表单的用户输…

树莓派开箱安装

树莓派摄像头安装教程&#xff1a; 百度安全验证 树莓派5代9层亚克力外壳安装&#xff1a; 百度安全验证

CGAL的三角曲面网格骨架化

1、介绍 马模型的曲线骨架。 骨架是用于分割、形状匹配、重建、虚拟导航等的有效形状抽象。顾名思义&#xff0c;曲线骨架是曲线结构的图&#xff08;1D&#xff09;。对于3D几何体来说&#xff0c;它不是由表面&#xff08;2D&#xff09;组成的中轴。如图所示&#xff0c;形…

IDEA的JavaWeb项目的webapp目录的小蓝点没亮怎么办???

我们可以看到没有小蓝点&#xff0c;正常的是有的。 没有小蓝点的原因&#xff1a;你的webapp 这个文件夹的路径不对。 解决方案&#xff1a;&#xff08;修改webapp的路径&#xff09; 我们可以看到&#xff0c;错误的路径是显示红色。 这个地方没有就添加一个路径&#xff0…

机器人制作开源方案 | 智能循迹搬运车

作者&#xff1a;范永晨 杨丽鹏 张东生 单位&#xff1a;唐山学院 指导老师&#xff1a;袁娜 都说21世纪为物流的天下&#xff0c;物流行业牵扯到各个领域。目前&#xff0c;劳动人口数量下降、老龄化现象加速、工资上涨&#xff0c;土地成本提升&#xff0c;随着市场不断发展…

外卖系统开发:构建高效、安全的外卖平台

在当今数字化时代&#xff0c;外卖系统成为了餐饮行业不可或缺的一部分。本文将介绍如何使用一些主流的技术和代码片段来开发一个简单而功能强大的外卖系统。 1. 技术选择 在开始外卖系统的开发之前&#xff0c;首先需要选择合适的技术栈。以下是一个常见的技术栈&#xff1…

IP 地址归属地查询

IP 地址归属地查询 1. IP 地址归属地查询2. IP 地址归属地查询References 1. IP 地址归属地查询 https://tool.lu/ip/index.html 2. IP 地址归属地查询 https://www.ip.cn/ip/.html References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

zookeeper基本使用

目录 环境搭建 单机版搭建 集群版搭建 基本语法使用 可视化客户端 数据结构 节点分类 1. 持久节点 2. 临时节点 3. 有序节点 4. 容器节点 5. TTL节点 节点状态 监听机制 watch监听 永久性watch 应用场景 1. 实现分布式锁 2. 乐观锁更新数据 应用场景总结 选…

【工具使用-A2B】使用A2B配置32通道车载音频系统

一,简介 在工作中需要使用A2B芯片传输32通道的车载音频数据。本文主要介绍,如何配置A2B工程来实现32通道车载音频系统。 二,配置介绍 2.1 A2B链路图配置: 2.2 A2B Master 寄存器配置: 2.3 A2B Slave 寄存器配置:

鸿蒙的基本项目_tabbar,首页,购物车,我的

以上效果&#xff0c;由四个ets文件实现&#xff0c;分别是容器页面。首页&#xff0c;购物车&#xff0c;我的。 页面里的数据&#xff0c;我是用json-server进行模拟的数据。 一、容器页面 使用组件Tabs和Tabcontent结合。 import Home from "./Home"; import …

并发编程——3.细说线程

这篇文章我们来详细的说一下并发编程中的线程及其相关的内容 目录 1.线程的创建 1.1通过继承Thread 1.2通过实现Runnable接口的方式 1.3使用FutureTask方式&#xff08;实现Callable接口的方式&#xff09; 1.4三种方式的区别 2.线程的原理 3.线程的常用方法 3.1start…

音频修复增强软件iZotope RX 10 mac特点介绍

iZotope RX 10 mac是一款音频修复和增强软件。 iZotope RX 10 mac软件特点 声音修复&#xff1a;iZotope RX 10可以去除不良噪音、杂音、吱吱声等&#xff0c;使音频变得更加清晰干净。 音频增强&#xff1a;iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限制器等处…

【JavaScript】异步解决方案的发展历程

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

LabVIEW 通信应用程序框架概述

概述 人和机器对可靠、无处不在且价格实惠的无线数据连接的不断需求给无线行业带来了巨大的压力。业界一致认为&#xff0c;下一代无线网络 (5G) 需要在 2020 年之前将容量提高一千倍&#xff0c;而成本不会相应增加。为了应对这一技术挑战&#xff0c;无线研究人员需要跳出框…

一体机定制_工控触控一体机安卓主板方案

工控一体机是一种集成化的硬件方案&#xff0c;采用了联发科MT8768八核芯片和12nm制程工艺。该芯片拥有2.0GHz的主频和IMG PowerVR GE8320图形处理GPU&#xff0c;具备强大的视频处理能力&#xff0c;并且兼容大部分的视频格式和解码能力。工控一体机搭载了Android 9.0操作系统…