当前位置:首页 > 系统教程 > 正文

SqlSugar批量更新实战指南(轻量级ORM批量操作与SQL跟踪全解析)

SqlSugar批量更新实战指南(轻量级ORM批量操作与SQL跟踪全解析)

小白也能轻松学会的SqlSugar批量更新及SQL语句查看方法

本文将详细介绍如何使用SqlSugar批量更新功能,并教你如何查看底层生成的SQL操作语句。SqlSugar是一款国产轻量级数据库ORM,性能优异,支持多种数据库,特别适合.NET开发者。掌握批量更新技巧,能大幅提升数据操作效率。通过本文,你将学会完整的实现步骤,并能够轻松查看SQL语句以进行调试优化,夯实.NET数据库操作基础。

SqlSugar批量更新实战指南(轻量级ORM批量操作与SQL跟踪全解析) SqlSugar批量更新  轻量级ORM 查看SQL语句 .NET数据库操作 第1张

1. 环境准备与安装

首先,在Visual Studio中创建.NET项目(控制台或Web均可),然后通过NuGet安装SqlSugar。打开包管理控制台,执行以下命令:

    Install-Package SqlSugar  

或者使用.NET CLI:

    dotnet add package SqlSugar  

2. 定义实体类

以学生表为例,创建实体类:

    public class Student{    public int Id { get; set; }    public string Name { get; set; }    public int Age { get; set; }    public string Class { get; set; }}  

3. 初始化数据库连接

创建SqlSugarClient实例,配置连接字符串和数据库类型(以SQL Server为例):

    using SqlSugar;var connectionConfig = new ConnectionConfig(){    ConnectionString = "server=.;database=TestDB;uid=sa;pwd=123456",    DbType = DbType.SqlServer,    IsAutoCloseConnection = true};using (var db = new SqlSugarClient(connectionConfig)){    // 数据库操作}  

4. 批量更新数据

假设我们需要更新多个学生的信息。SqlSugar提供了多种批量更新方式,最常用的是UpdateRangeUpdate方法传入集合。示例:

    List students = new List(){    new Student { Id = 1, Name = "张三", Age = 20, Class = "一班" },    new Student { Id = 2, Name = "李四", Age = 21, Class = "二班" },    new Student { Id = 3, Name = "王五", Age = 22, Class = "一班" }};// 批量更新所有字段var result = db.Updateable(students).ExecuteCommand();Console.WriteLine($"影响行数:{result}");  

如果需要只更新指定列,可以使用UpdateColumns方法:

    db.Updateable(students)  .UpdateColumns(s => new { s.Name, s.Age }) // 只更新Name和Age  .ExecuteCommand();  

5. 查看最终生成的SQL语句

SqlSugar提供了AOP(面向切面编程)事件,可以轻松拦截并输出SQL语句。在初始化数据库连接后,添加如下代码:

    db.Aop.OnLogExecuting = (sql, parameters) =>{    Console.WriteLine("生成的SQL:" + sql);    // 如果需要查看参数,可以遍历parameters    foreach (var p in parameters)    {        Console.WriteLine($"参数:{p.ParameterName} = {p.Value}");    }};  

这样,每次执行数据库操作时,都会在控制台输出完整的SQL语句及参数,帮助你验证批量更新是否正确。例如,上面批量更新可能生成如下SQL:

    UPDATE [Student] SET [Name]=@Name, [Age]=@Age, [Class]=@Class WHERE [Id]=@Id  

并且会为每个实体执行一条更新语句(具体取决于SqlSugar的批量策略,也可配置为合并语句)。通过查看SQL语句,你可以确认数据库实际执行的操作,确保性能和数据一致性。

6. 完整示例代码

综合以上步骤,一个完整的控制台程序如下:

    using SqlSugar;using System;using System.Collections.Generic;namespace SqlSugarDemo{    class Program    {        static void Main(string[] args)        {            var db = new SqlSugarClient(new ConnectionConfig()            {                ConnectionString = "server=.;database=TestDB;uid=sa;pwd=123456",                DbType = DbType.SqlServer,                IsAutoCloseConnection = true            });            // 开启SQL日志            db.Aop.OnLogExecuting = (sql, p) =>            {                Console.WriteLine("==================== SQL ====================");                Console.WriteLine(sql);                Console.WriteLine("参数:" + string.Join(", ", p.Select(p => $"{p.ParameterName}={p.Value}")));                Console.WriteLine("===============================================");            };            // 准备批量更新数据            var students = new List            {                new Student { Id = 1, Name = "张三", Age = 20, Class = "一班" },                new Student { Id = 2, Name = "李四", Age = 21, Class = "二班" },                new Student { Id = 3, Name = "王五", Age = 22, Class = "一班" }            };            // 执行批量更新            var count = db.Updateable(students).ExecuteCommand();            Console.WriteLine($"更新了{count}条记录");        }    }    public class Student    {        public int Id { get; set; }        public string Name { get; set; }        public int Age { get; set; }        public string Class { get; set; }    }}  

运行程序,你将在控制台看到类似以下的SQL输出:

    ==================== SQL ====================UPDATE [Student]  SET [Name]=@Name, [Age]=@Age, [Class]=@Class  WHERE [Id]=@Id参数:@Name=张三, @Age=20, @Class=一班, @Id=1=================================================================== SQL ====================UPDATE [Student]  SET [Name]=@Name, [Age]=@Age, [Class]=@Class  WHERE [Id]=@Id参数:@Name=李四, @Age=21, @Class=二班, @Id=2=================================================================== SQL ====================UPDATE [Student]  SET [Name]=@Name, [Age]=@Age, [Class]=@Class  WHERE [Id]=@Id参数:@Name=王五, @Age=22, @Class=一班, @Id=3===============================================更新了3条记录  

通过这种方式,你可以直观地看到每条更新语句及其参数,确保SqlSugar批量更新按预期工作。如果需要合并为一条批量更新语句,可以配置SqlSugar的批量参数,具体请参考官方文档。

至此,你已经掌握了轻量级数据库ORM的批量更新技巧,并能轻松查看SQL语句,为你的.NET数据库操作项目提供了有力支持。赶快动手试试吧!