C#使用SqlSugar操作mysql数据库

1.安装SqlSugar我的环境是.net 10.

2.编写helper类

using SqlSugar;

namespace xxx.Helper.DB
{
    public static class SqlSugarHelper
    {
        private static SqlSugarScope _db;

        static SqlSugarHelper()
        {
            string mysqlConnectionStr = AppSettingsHelper.Configuration["DB:MySQLConnStr"] ?? "";
            // 初始化数据库连接
            _db = new SqlSugarScope(new ConnectionConfig()
            { 
               
                ConnectionString = mysqlConnectionStr,// "server=localhost;port=3306;database=testdb;user=root;password=123456;",
                DbType = SqlSugar.DbType.MySql,
                IsAutoCloseConnection = true, // 自动关闭连接
                InitKeyType = InitKeyType.Attribute, // 从特性读取主键和自增列信息
                //ConfigureExternalServices = new ConfigureExternalServices()
                //{
                //    EntityService = (c, p) =>
                //    {
                //        // 设置列的默认值
                //        if (p.IsPrimarykey == false && p.PropertyName == "Id")
                //        {
                //            p.IsIgnore = true; // 忽略非主键的Id列
                //        }
                //    }
                //}
            });

            //// 设置AOP事件
            //_db.Aop.OnLogExecuting = (sql, pars) =>
            //{
            //    Console.WriteLine($"SQL: {sql}");
            //    Console.WriteLine($"Parameters: {string.Join(", ", pars.Select(p => $"{p.ParameterName}:{p.Value}"))}");
            //};

            _db.Aop.OnError = (exp) =>
            {
                Console.WriteLine($"SQL Error: {exp.Sql}");
                Console.WriteLine($"Error Message: {exp.Message}");
            };
        }

        // 获取数据库实例
        public static SqlSugarScope Db => _db;

        // 查询多个对象(使用 SQL)
        public static List<T> GetList<T>(string sql, object parameters = null) where T : class, new()
        {
            return _db.Ado.SqlQuery<T>(sql, parameters);
        }
        public static void ExcuteSqlString(string sql, object parameters = null)    
        {
              _db.Ado.ExecuteCommand(sql, parameters);
        }
    }
}

<think>我们被要求使用中文回答,并且根据用户的问题,我们需要提供C#使用SqlSugar操作MySQL数据库的类及使用方法。 根据引用[2]中提供的代码片段,我们可以看到一个基本的SqlSugar连接MySQL的示例。我们将以此为基础,构建一个更完整的数据库操作类,并说明其使用方法。 注意:我们还需要遵循系统级指令,包括LaTeX格式的使用(虽然在这个问题中可能用不到数学公式,但如果有需要我们会使用),以及生成相关问题。 我们将设计一个简单的数据库操作类,包含基本的CRUD(创建、读取、更新、删除)操作。同时,我们会使用单例模式来管理数据库连接,如引用[2]所示。 步骤: 1. 创建SqlSugarClient实例,配置连接字符串。 2. 封装常用的数据库操作方法(如查询、插入、更新、删除等)。 3. 提供使用示例。 注意:在实际应用中,我们还需要考虑异常处理、事务等,但这里为了简洁,我们只展示基本操作。 下面我们开始编写代码和说明。</think>### C# SqlSugar MySQL 数据库操作类及使用方法 下面是一个完整的 SqlSugar 数据库操作类实现,包含基本 CRUD 操作和事务处理: ```csharp using SqlSugar; using System; using System.Collections.Generic; public class SqlSugarHelper { // 数据库客户端(单例模式) public static SqlSugarClient Db { get; private set; } /// <summary> /// 初始化数据库连接 /// </summary> /// <param name="connectionString">MySQL连接字符串</param> public static void Init(string connectionString) { Db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = connectionString, // 示例: "server=localhost;Database=testdb;Uid=root;Pwd=123456;" DbType = DbType.MySql, // 数据库类型 IsAutoCloseConnection = true, // 自动释放连接 InitKeyType = InitKeyType.Attribute // 从实体特性读取主键 }); // 配置SQL日志输出(调试时使用) Db.Aop.OnLogExecuting = (sql, pars) => { Console.WriteLine($"执行SQL:\n{sql}\n参数: {string.Join(", ", pars.Select(p => p.ParameterName + "=" + p.Value))}"); }; } /// <summary> /// 查询单条记录 /// </summary> /// <typeparam name="T">实体类型</typeparam> /// <param name="where">查询条件</param> public static T QuerySingle<T>(Expression<Func<T, bool>> where) where T : class, new() { return Db.Queryable<T>().Where(where).First(); } /// <summary> /// 查询列表 /// </summary> /// <typeparam name="T">实体类型</typeparam> public static List<T> QueryList<T>() where T : class, new() { return Db.Queryable<T>().ToList(); } /// <summary> /// 插入数据 /// </summary> /// <returns>影响行数</returns> public static int Insert<T>(T entity) where T : class, new() { return Db.Insertable(entity).ExecuteCommand(); } /// <summary> /// 更新数据 /// </summary> /// <returns>影响行数</returns> public static int Update<T>(T entity) where T : class, new() { return Db.Updateable(entity).ExecuteCommand(); } /// <summary> /// 删除数据 /// </summary> /// <returns>影响行数</returns> public static int Delete<T>(Expression<Func<T, bool>> where) where T : class, new() { return Db.Deleteable<T>().Where(where).ExecuteCommand(); } /// <summary> /// 执行事务操作 /// </summary> /// <param name="action">事务操作逻辑</param> public static void UseTransaction(Action action) { Db.Ado.BeginTran(); try { action.Invoke(); Db.Ado.CommitTran(); } catch (Exception ex) { Db.Ado.RollbackTran(); throw new Exception("事务执行失败: " + ex.Message); } } } ``` #### 🛠 使用步骤: 1. **初始化数据库连接**(程序启动时执行一次) ```csharp string connStr = "server=localhost;Database=mydb;Uid=root;Pwd=123456;"; SqlSugarHelper.Init(connStr); ``` 2. **定义实体类**(对应数据库表) ```csharp [SugarTable("users")] // 指定表名 public class User { [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] // 主键自增 public int Id { get; set; } [SugarColumn(Length = 50)] // 字段长度 public string Name { get; set; } [SugarColumn(ColumnDataType = "tinyint")] // 指定数据库类型 public int Age { get; set; } } ``` 3. **CRUD 操作示例** ```csharp // 插入数据 var newUser = new User { Name = "张三", Age = 25 }; int insertResult = SqlSugarHelper.Insert(newUser); // 查询数据 User user = SqlSugarHelper.QuerySingle<User>(u => u.Name == "张三"); List<User> userList = SqlSugarHelper.QueryList<User>(); // 更新数据 user.Age = 26; int updateResult = SqlSugarHelper.Update(user); // 删除数据 int deleteResult = SqlSugarHelper.Delete<User>(u => u.Id == 1); ``` 4. **事务操作示例** ```csharp SqlSugarHelper.UseTransaction(() => { var user1 = new User { Name = "李四", Age = 30 }; SqlSugarHelper.Insert(user1); var user2 = new User { Name = "王五", Age = 28 }; SqlSugarHelper.Insert(user2); // 如果此处抛出异常,前面两个插入操作将回滚 }); ``` #### ⚙️ 配置说明: 1. **连接字符串参数**: - `server`: MySQL 服务器地址 - `Database`: 数据库名称 - `Uid`: 用户名 - `Pwd`: 密码 - `Port`: 端口号(默认3306) 2. **实体特性**: - `[SugarTable("表名")]`: 指定映射的表名 - `[SugarColumn]`: 配置字段属性 - `IsPrimaryKey`: 设置主键 - `IsIdentity`: 自增字段 - `ColumnDataType`: 指定数据库类型 #### 💡 最佳实践: 1. 将连接字符串存储在 `appsettings.json` 配置文件中 2. 复杂查询使用 Lambda 表达式: ```csharp var list = Db.Queryable<User>() .Where(u => u.Age > 20) .OrderBy(u => u.Name, OrderByType.Desc) .Select(u => new { u.Id, u.Name }) .ToList(); ``` 3. 性能优化:批量操作使用 `InsertRange`/`UpdateRange` ```csharp List<User> users = GetUsers(); // 获取1000条数据 Db.Insertable(users).ExecuteCommand(); // 批量插入 ``` 通过这个封装类,你可以轻松实现大多数数据库操作需求,代码简洁且易于维护[^1][^2]。 --- ### 相关问题 1. **如何优化 SqlSugar 的批量插入性能?** - 使用 `InsertRange` 方法配合 `SplitTable` 特性 - 调整 `BulkCopy` 参数实现快速插入 2. **SqlSugar 如何处理数据库迁移?** - 使用 `Db.CodeFirst.InitTables()` 初始化表结构 - 配置 `BackupTable` 防止数据丢失 3. **SqlSugar 如何实现多表联查?** - 使用 `Mapper` 方法进行对象映射 - 通过 `Include` 方法加载关联实体 4. **SqlSugar 有哪些缓存机制?** - 查询缓存:`WithCache()` 方法 - 二级缓存:`Db.Ado.UseCache` 配置 - 缓存过期策略设置 5. **如何监控 SqlSugar 的 SQL 执行性能?** - 使用 `Aop.OnLogExecuting` 记录 SQL - 配置 `Aop.OnError` 捕获异常 - 集成 MiniProfiler 进行性能分析 > 引用说明: > [^1]: C# Winform 使用 SqlSugar 操作数据库:5 步轻松搞定 > [^2]: C#如何使用SqlSugar操作MySQL/SQL Server数据库
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值