当前位置: 首页 > news >正文

C#SqlSugar的简单使用

文章目录

  • 1 版本信息
  • 2 学习链接
  • 3 工具类封装
    • 3.1 OperaResult
    • 3.2 SqlSugarHelper

1 版本信息

使用该类时需要在包管理器中 安装:sqlSugarCore 5.0.0

2 学习链接

本文章为了记录学习资料,当做笔记使用,不喜勿扰!

包含了所有SqlSugar的操作链接!

SqlSugar笔记,该部分是以前的文章

3 工具类封装

3.1 OperaResult

using System.Collections.Generic;namespace SqlSugarManage
{public class OperaResult{/// <summary>/// 操作结果/// </summary>public bool Success { get; set; }/// <summary>/// 整型返回值/// </summary>public int Result { get; set; }/// <summary>/// 异常信息/// </summary>public string ErrorMessage { get; set; }}public class OperaResult<T> : OperaResult{/// <summary>/// 数据/// </summary>public List<T> Data { get; set; }/// <summary>/// 当前页码/// </summary>public int PageIndex { get; set; }/// <summary>/// 每页条数/// </summary>public int PageSize { get; set; }/// <summary>/// 总记录数/// </summary>public int TotalCount { get; set; }/// <summary>/// 总页数/// </summary>public int TotalPages { get; set; }}}

3.2 SqlSugarHelper

using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using SqlSugar;namespace SqlSugarManage
{/// <summary>/// SqlSugar帮助类类/// </summary>public class SqlSugarHelper{private SqlSugarClient db;public SqlSugarClient Db => db;/// <summary>/// 在构造函数中连接数据库/// </summary>public SqlSugarHelper(string datasource){string connStr = $"Data Source={datasource};";db = new SqlSugarClient(new ConnectionConfig{ConnectionString = connStr,//连接符字串DbType = DbType.Sqlite,//该项报发生冲突错误时,移除命名空间引入的冲突对象IsAutoCloseConnection = true,InitKeyType = InitKeyType.Attribute});}/// <summary>/// 生成实体类/// </summary>/// <param name="objectNames">表名,生成实体类的名称</param>/// <param name="path">生成实体类的目录</param>/// <param name="strNameSpace">实体类命名空间</param>public void CreateClassFile(string objectNames, string path, string strNameSpace){//生成 当前连接数据库所有数据表 的实体类db.DbFirst.CreateClassFile(path, strNameSpace);//生成 数据表名为objectNames参数值的数据表 的实体类db.DbFirst.Where(objectNames).CreateClassFile(path, strNameSpace);//生成 数据表名转换为小写后 以t开头的数据表 的实体类db.DbFirst.Where(it => it.ToLower().StartsWith("t")).CreateClassFile(path, strNameSpace);//生成 数据表名为objectNames参数值的数据表 的实体类并包含特性db.DbFirst.Where(objectNames).IsCreateAttribute().CreateClassFile(path, strNameSpace);//生成 数据表名为objectNames参数值的数据表 的实体类并包含默认值db.DbFirst.IsCreateDefaultValue().CreateClassFile(path, strNameSpace);}/// <summary>/// 创建数据表/// </summary>public void CreateTable<T>(){//创建GUID主键的数据表时,主键类型设置为Guid即可,无需添加特性,数据库中id类型表示为:uniqueidentifierdb.CodeFirst.InitTables(typeof(T));}/// <summary>/// 插入批量数据/// </summary>public OperaResult Insert<T>(List<T> list) where T : class, new(){if (list.Count > 10){try{db.BeginTran();foreach (var t in list){db.Insertable(t).ExecuteCommand();}db.CommitTran();return new OperaResult { Success = true };}catch (Exception ex){db.RollbackTran();return new OperaResult { ErrorMessage = ex.Message };}}else{var result = db.Insertable(list).ExecuteCommand();return new OperaResult{Success = result > 0,Result = result};}}/// <summary>/// 插入一条数据/// </summary>public void Insert<T>(T insertObj) where T : class, new(){var result = db.Insertable(insertObj).ExecuteCommand();}/// <summary>/// 删除表中所有数据/// </summary>public void DeleteAll<T>() where T : class, new(){var result = db.Deleteable<T>().ExecuteCommand();}/// <summary>/// 删除数据(删除符合条件的所有数据)/// </summary>public void Delete<T>(Expression<Func<T, bool>> expression) where T : class, new(){var result = db.Deleteable<T>().Where(expression).ExecuteCommand();}/// <summary>/// 更新数据(符合条件的数据修改为实例中参数信息)/// </summary>public void Update<T>(Expression<Func<T, T>> columns, Expression<Func<T, bool>> expression) where T : class, new(){var result = db.Updateable<T>().SetColumns(columns).Where(expression).ExecuteCommand();}/// <summary>/// 更新数据(符合条件的数据修改为指定参数信息)/// </summary>public void Update<T>(T t, Expression<Func<T, bool>> expression) where T : class, new(){var result = db.Updateable(t).Where(expression).ExecuteCommand();}/// <summary>/// 更新数据(根据主键修改数据)/// </summary>public void Update<T>(T t) where T : class, new(){var result = db.Updateable(t).ExecuteCommand();}/// <summary>/// 查询符合条件的元素数/// </summary>public int Count<T>(Expression<Func<T, bool>> expression = null){var queryable = db.Queryable<T>();return expression == null ? queryable.Count() : queryable.Count(expression);}/// <summary>/// 查询满足条件的所有数据/// </summary>public List<T> Query<T>(Expression<Func<T, bool>> expression = null){var queryable = db.Queryable<T>();if (expression != null){queryable.Where(expression);}return queryable.ToList();}/// <summary>/// 分页查询/// </summary>public OperaResult<T> QueryPage<T>(int pageIndex, int pageSize, Expression<Func<T, bool>> expression = null){var queryable = db.Queryable<T>();if (expression != null){queryable.Where(expression);}int totalNumber = 100, totalPage = 10;var list = queryable.ToPageList(pageIndex, pageSize, ref totalNumber, ref totalPage);return new OperaResult<T>{Success = list.Count > 0,Data = list,PageIndex = pageIndex,PageSize = pageSize,TotalPages = totalPage,TotalCount = totalNumber,ErrorMessage = list.Count > 0 ? null : "未获取到数据,请检查参数。"};}}}

文章转载自:

http://kxMJWgls.hbnwr.cn
http://gK5tRQLd.hbnwr.cn
http://1S59K40H.hbnwr.cn
http://xPAF4xLU.hbnwr.cn
http://b87hfSkl.hbnwr.cn
http://XNqS3nTE.hbnwr.cn
http://XHprwBzf.hbnwr.cn
http://6DBvb1ty.hbnwr.cn
http://p9WYYEYW.hbnwr.cn
http://xzemYXWf.hbnwr.cn
http://e3b9EZJ2.hbnwr.cn
http://yuGFnSdS.hbnwr.cn
http://jHA7vFkY.hbnwr.cn
http://4jE0ze2L.hbnwr.cn
http://56sGP9qt.hbnwr.cn
http://j3mcb3lE.hbnwr.cn
http://xxyDWL24.hbnwr.cn
http://0yofAWsB.hbnwr.cn
http://sYNi6PLX.hbnwr.cn
http://83w3seBa.hbnwr.cn
http://T2ZpnRrk.hbnwr.cn
http://nechRHFN.hbnwr.cn
http://PvxVEVtr.hbnwr.cn
http://91Fz85hL.hbnwr.cn
http://M4CBycwS.hbnwr.cn
http://JBKpVPkU.hbnwr.cn
http://HEOFqlng.hbnwr.cn
http://8nqwWYz7.hbnwr.cn
http://1q8wZH7i.hbnwr.cn
http://RY4aNGRt.hbnwr.cn
http://www.dtcms.com/a/372730.html

相关文章:

  • 【军事类】军舰识别检测数据集:3400+图像,4类,yolo标注
  • 基于若依框架Vue+TS导出PDF文件的方法
  • ArcGIS学习-18 实战-降雨量空间分布插值分析
  • OpenCV 银行卡号识别
  • CentOS 8重启后网卡不见了解决办法
  • Nginx反向代理和负载均衡详解及使用Nginx和tomcat共同实现动静分离配置
  • UDP的使用
  • WGAI项目图像视频语音识别功能
  • 9.3深度循环神经网络
  • 【嵌入式硬件实例】-555定时器实现自动晚灯(220V)
  • Linux Shell | set、env、export 用法区别
  • 浅聊一下微服务的服务保护
  • Nginx 实战系列(五)—— Nginx流量监控:从stub_status到nginx-module-vts的进阶指南
  • 34. 什么是反射
  • YOLO11 改进、魔改|通道自注意力卷积块CSA-ConvBlock,实现 “轻量化特征增强”
  • 优先搜索(DFS)实战
  • 计算机视觉opencv----银行卡号码识别
  • 第六章、从transformer到nlp大模型:编码器-解码器模型 (Encoder-Decoder)
  • pymodbus启动一个简单的modbus tcp server
  • 【NowCoder】牛客周赛 Round 108 EF (背包问题 | SOSDP)
  • 【ARMday02】
  • OFDR设备开机到出图的5个关键操作步骤
  • ArcGIS学习-19 实战-表面分析
  • 【算法】双指针(二)复写零
  • 视频串行解串器(SerDes)介绍
  • PyTorch 动态图的灵活性与实用技巧
  • 【P01_AI测试开发课程-导论】
  • 从社交破冰到学习规划,鸿蒙5开启智慧校园新生活
  • 【Linux操作系统】简学深悟启示录:文件fd
  • Kata Container 部署与应用实践