编辑
2025-09-22
C#
00

目录

摘要
正文

摘要

SqlSugar 是一个简单而强大的.NET ORM(对象关系映射)框架,它支持多种数据库,包括 SQL Server、MySQL、SQLite、PostgreSQL 等。使用 SqlSugar,你可以非常轻松地进行数据库操作,比如新增、查询、更新和删除数据等。

从单条插入,批量插入,字典插入,或是DataTable插入,也可以匿名插入。

正文

方法名描述
ExecuteCommand注意:批量插入用该方法性能最好 返回数据库受影响的行数,例如查询返回0,更新0条返回0,更新1条返回1
新功能 (5.1.2.4 prview01 ) ExecuteReturnPkList(); 用例:  ExecuteReturnPkList();  ExecuteReturnPkList();  ExecuteReturnPkList();批量返回主键 1、支持 批量返回自增 ,SqlServer和PgSql性能比较好(其它库性能差些) 2、支持返回雪花ID (等同于ExecuteReturnSnowflakeIdList) 3、支持返回GUID 不支持用触发器的主键
ExecuteReturnIdentity返回单个自增列 (int)
ExecuteReturnBigIdentity返回单个自增列 (long)
ExecuteReturnEntity返回实体(如果有自增会返回到实里面,不支批量自增,不支持默认值)
ExecuteCommandIdentityIntoEntity给传入实体添加自增列  (不支持批量)
ExecuteReturnSnowflakeId返回雪花ID 5.0.3.5支持
ExecuteReturnSnowflakeIdList返回雪花ID集合 5.0.3.5支持

实体类

C#
public class wms_user { [SqlSugar.SugarColumn(IsPrimaryKey = true)] public long id { get; set; } public string name { get; set; } public string dept { get; set; } public string duty { get; set; } public DateTime hire_date { get; set; } [SqlSugar.SugarColumn(IsNullable = true)] public DateTime? term_date { get; set; } }

插入单条

这个id是GUID

C#
wms_user user = new wms_user { id = Guid.NewGuid(), name = "张三", dept = "IT", duty = "程序员", hire_date = DateTime.Parse("2022-1-1"), term_date = null }; var ret= Db.Insertable(user).ExecuteCommand();

也可以用雪花ID

C#
//SnowFlakeSingle.WorkId = 1; 多个服务器插入的情况下 程序启动时加上 wms_user user = new wms_user { name = "张三", dept = "IT", duty = "程序员", hire_date = DateTime.Parse("2022-1-1"), term_date = null }; var ret = Db.Insertable(user).ExecuteReturnSnowflakeId();

不插入指定字段

hire_date 在数据库有默认值,这里指定了值,但因为忽略了,也不会插入表

C#
wms_user user = new wms_user { name = "李四", dept = "IT", duty = "程序员", hire_date = DateTime.Parse("2022-1-1"), term_date = DateTime.Now }; var ret = Db.Insertable(user).IgnoreColumns(x => x.hire_date).ExecuteReturnSnowflakeId();

只插入指定字段

C#
wms_user user = new wms_user { name = "李四", dept = "IT", duty = "程序员", hire_date = DateTime.Parse("2022-1-1"), term_date = DateTime.Now }; var ret = Db.Insertable(user).InsertColumns(x => new {x.id, x.name, x.dept }) .ExecuteReturnSnowflakeId();

NULL列不插入

C#
wms_user user = new wms_user { name = "李四", dept = "IT", duty = "程序员", hire_date = DateTime.Parse("2022-1-1"), term_date = null }; var ret = Db.Insertable(user).IgnoreColumns(ignoreNullColumn:true).ExecuteReturnSnowflakeId();

字典插入

C#
var dc = new Dictionary<string, object>(); dc.Add("id", SnowFlakeSingle.Instance.NextId()); dc.Add("name", "张飞"); dc.Add("dept", "IT"); dc.Add("duty", "程序员"); dc.Add("hire_date", DateTime.Now.AddDays(-100)); var ret = Db.Insertable(dc).AS("wms_user").ExecuteCommand();

批量数据插入

C#
List<wms_user> lst = new List<wms_user>(); lst.Add(new wms_user { id=SnowFlakeSingle.Instance.NextId(), name = "李四1", dept = "IT", duty = "程序员", hire_date = DateTime.Parse("2022-1-1"), term_date = null }); lst.Add(new wms_user { id = SnowFlakeSingle.Instance.NextId(), name = "李四2", dept = "IT", duty = "程序员", hire_date = DateTime.Parse("2022-1-1"), term_date = null }); lst.Add(new wms_user { id = SnowFlakeSingle.Instance.NextId(), name = "李四3", dept = "IT", duty = "程序员", hire_date = DateTime.Parse("2022-1-1"), term_date = null }); var ret = Db.Fastest<wms_user>().BulkCopy(lst);

在Winform中调用

C#
List<wms_user> lst = new List<wms_user>(); lst.Add(new wms_user { id=SnowFlakeSingle.Instance.NextId(), name = "李四1", dept = "IT", duty = "程序员", hire_date = DateTime.Parse("2022-1-1"), term_date = null }); lst.Add(new wms_user { id = SnowFlakeSingle.Instance.NextId(), name = "李四2", dept = "IT", duty = "程序员", hire_date = DateTime.Parse("2022-1-1"), term_date = null }); lst.Add(new wms_user { id = SnowFlakeSingle.Instance.NextId(), name = "李四3", dept = "IT", duty = "程序员", hire_date = DateTime.Parse("2022-1-1"), term_date = null }); var t=Task.Run(() => { Db.Fastest<wms_user>().BulkCopy(lst); }); var finish = t.ContinueWith((x => { //运行完成后回调 }));

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!