领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

175.C# SqlSugar 新增数据(c#sql数据库建立)

nixiaole 2025-07-21 16:58:05 知识剖析 5 ℃

摘要


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

正文


摘要


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

正文


方法名

描述

ExecuteCommand

注意:批量插入用该方法性能最好<br><br>返回数据库受影响的行数,例如查询返回0,更新0条返回0,更新1条返回1

新功能 (5.1.2.4 prview01 )<br><br> ExecuteReturnPkList<T>();<br><br> 用例:<br><br> ExecuteReturnPkList<int>();<br><br> ExecuteReturnPkList<Long>();<br><br> ExecuteReturnPkList<Guid>();

批量返回主键 <br><br>1、支持 批量返回自增 ,SqlServer和PgSql性能比较好(其它库性能差些)<br><br>2、支持返回雪花ID (等同于
ExecuteReturnSnowflakeIdList)<br><br>3、支持返回GUID<br><br>不支持用触发器的主键

ExecuteReturnIdentity

返回单个自增列 (int)

ExecuteReturnBigIdentity

返回单个自增列 (long)

ExecuteReturnEntity

返回实体(如果有自增会返回到实里面,不支批量自增,不支持默认值)

ExecuteCommandIdentityIntoEntity

给传入实体添加自增列 (不支持批量)

ExecuteReturnSnowflakeId

返回雪花ID 5.0.3.5支持

ExecuteReturnSnowflakeIdList

返回雪花ID集合 5.0.3.5支持

实体类

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

 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

//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 在数据库有默认值,这里指定了值,但因为忽略了,也不会插入表

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();

只插入指定字段

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列不插入

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();

字典插入

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();

批量数据插入

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中调用

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 =>
{
    //运行完成后回调
}));

最近发表
标签列表