网站制作精品案例欣赏,建设网站的价格表,天长市做网站,编程 毕业设计代做网站FreeSql支持丰富的更新数据方法#xff0c;支持单条或批量更新#xff0c;在特定的数据库执行还可以返回更新后的记录值。 var connstr Data Source127.0.0.1;Port3306;User IDroot;Passwordroot; Initial Catalogcccddd;Charsetutf8;SslModenone;Max po… FreeSql支持丰富的更新数据方法支持单条或批量更新在特定的数据库执行还可以返回更新后的记录值。 var connstr Data Source127.0.0.1;Port3306;User IDroot;Passwordroot; Initial Catalogcccddd;Charsetutf8;SslModenone;Max pool size10;IFreeSql fsql new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, connstr).UseAutoSyncStructure(true) //自动同步实体结构到数据库.Build();[Table(Name tb_topic)]
class Topic {[Column(IsIdentity true, IsPrimary true)]public int Id { get; set; }public int Clicks { get; set; }public string Title { get; set; }public DateTime CreateTime { get; set; }
} 批量更新 var items new ListTopic();
for (var a 0; a 10; a) items.Add(new Topic { Id a 1, Title $newtitle{a}, Clicks a * 100 });fsql.UpdateTopic().SetSource(items).ExecuteAffrows();
//UPDATE tb_topic SET Clicks CASE Id WHEN 1 THEN ?p_0 WHEN 2 THEN ?p_1 WHEN 3 THEN ?p_2 WHEN 4 THEN ?p_3 WHEN 5 THEN ?p_4 WHEN 6 THEN ?p_5 WHEN 7 THEN ?p_6 WHEN 8 THEN ?p_7 WHEN 9 THEN ?p_8 WHEN 10 THEN ?p_9 END, Title CASE Id WHEN 1 THEN ?p_10 WHEN 2 THEN ?p_11 WHEN 3 THEN ?p_12 WHEN 4 THEN ?p_13 WHEN 5 THEN ?p_14 WHEN 6 THEN ?p_15 WHEN 7 THEN ?p_16 WHEN 8 THEN ?p_17 WHEN 9 THEN ?p_18 WHEN 10 THEN ?p_19 END, CreateTime CASE Id WHEN 1 THEN ?p_20 WHEN 2 THEN ?p_21 WHEN 3 THEN ?p_22 WHEN 4 THEN ?p_23 WHEN 5 THEN ?p_24 WHEN 6 THEN ?p_25 WHEN 7 THEN ?p_26 WHEN 8 THEN ?p_27 WHEN 9 THEN ?p_28 WHEN 10 THEN ?p_29 END WHERE (Id IN (1,2,3,4,5,6,7,8,9,10)) 批量更新的场景先查询20条记录根据本地很复杂的规则把集合的值改完后 传统做法是循环20次保存用 case when 只要一次就行 批量更新忽略一些列 fsql.UpdateTopic().SetSource(items).IgnoreColumns(a new { a.Clicks, a.CreateTime }).ExecuteAffrows();
//UPDATE tb_topic SET Title CASE Id WHEN 1 THEN ?p_0 WHEN 2 THEN ?p_1 WHEN 3 THEN ?p_2 WHEN 4 THEN ?p_3 WHEN 5 THEN ?p_4 WHEN 6 THEN ?p_5 WHEN 7 THEN ?p_6 WHEN 8 THEN ?p_7 WHEN 9 THEN ?p_8 WHEN 10 THEN ?p_9 END WHERE (Id IN (1,2,3,4,5,6,7,8,9,10)) 批量更新指定列 fsql.UpdateTopic().SetSource(items).Set(a a.CreateTime, DateTime.Now).ExecuteAffrows();
//UPDATE tb_topic SET CreateTime ?p_0 WHERE (Id IN (1,2,3,4,5,6,7,8,9,10)) 指定列更新后批量保存将失效 内部实现 当更新大批量数据时内部采用分割分批执行的逻辑进行。分割规则如下 数量参数量MySql50003000PostgreSQL50003000SqlServer10002100Oracle500999Sqlite5000999 数据为每批分割的大小如批量插入 10000 条数据在 mysql 执行时会分割为两批。 参数量为每批分割的参数量大小如批量插入 10000 条数据每行需要使用 5 个参数化在 mysql 执行时会分割为每批 3000 / 5。 分割执行后当外部未提供事务时内部自开事务实现插入完整性。 FreeSql 适配了每一种数据类型参数化和不参数化的使用。批量插入建议关闭参数化功能使用 .NonoParameter() 进行执行。 API 方法返回值参数描述SetSourcethisT1 | IEnumerable更新数据设置更新的实体IgnoreColumnsthisLambda忽略的列SetthisLambda, value设置列的新值Set(a a.Name, newvalue)SetthisLambda设置列的的新值为基础上增加Set(a a.Clicks 1)相当于 clicksclicks1;SetRawthisstring, parms设置值自定义SQL语法SetRaw(title ?title, new { title newtitle })WherethisLambda表达式条件仅支持实体基础成员不包含导航对象Wherethisstring, parms原生sql语法条件Where(id ?id, new { id 1 })WherethisT1 | IEnumerable传入实体或集合将其主键作为条件WhereExiststhisISelect子查询是否存在WithTransactionthisDbTransaction设置事务对象ToSqlstring返回即将执行的SQL语句ExecuteAffrowslong执行SQL语句返回影响的行数ExecuteUpdatedListT1执行SQL语句返回更新后的记录系列文章导航 一入门二自动迁移实体三实体特性四实体特性 Fluent Api五插入数据六批量插入数据七插入数据时忽略列八插入数据时指定列九删除数据十更新数据十一更新数据 Where十二更新数据时指定列十三更新数据时忽略列十四批量更新数据十五查询数据十六分页查询十七联表查询十八导航属性十九多表查询二十多表查询 WhereCascade二十一查询返回数据二十二Dto 映射查询二十三分组、聚合二十四Linq To Sql 语法使用介绍二十五延时加载二十六贪婪加载 Include、IncludeMany、Dto、ToList二十七将已写好的 SQL 语句与实体类映射进行二次查询二十八事务二十九Lambda 表达式三十读写分离三十一分区分表三十二Aop三十三CodeFirst 类型映射三十四CodeFirst 迁移说明三十五CodeFirst 自定义特性转载于:https://www.cnblogs.com/FreeSql/p/11531335.html