给SqlSugar一个优化建议
声明:本作者无恶意只是觉得这个功能很不错,平常工作当中经常用到,自己框架也做了相应的支持,本着技术共享目的。
一、对象组合设置列更新支持 建议度:高
业务场景
1.更新列表需统一设置 例如:修改人ID、修改人名称、修改日期等
2.更新列表需原字段参与计算,例如:更新次数、金额等
优化前后区别
前:需遍历设置你要更新的字段
后:无需遍历设置更新字段,数据量越大性能越高 数据量小差异不大
SqlSugar 示例代码
var list = new List<Product>()
{
new Product()
{
ProductId = 1,
ProductCode = "1001",
},
new Product()
{
ProductId = 1,
ProductCode = "1002",
}
};
var sql = db.Updateable(list).UpdateColumns(c => new
{
c.ProductCode
}).SetColumns(c => new Product()
{
ModifyUserId = "666666",
ModifyName = "靓仔"
}).ToSqlString();
Console.WriteLine(sql);
目前可以得到友好异常提示
中文提示 : 根据对像更新 db.Updateabe(对象) 禁止使用 SetColumns和Where ,你可以使用WhereColumns 和 UpdateColumns。 更新分为2种方式 1.根据表达式更新 2.根据实体或者集合更新 , 具体用法请查看文档
English Message : no support SetColumns and Where
Fast.Framework 示例代码(参考实现)
var list = new List<Product>()
{
new Product()
{
ProductId = 1,
ProductCode = "1001"
},
new Product()
{
ProductId = 2,
ProductCode = "1002"
}
}; var sql = db.Update(list)
.Columns(c => c.ProductCode)
.SetColumns(c => new Product()
{
ModifyUserId = "666666",
ModifyUserName = "靓仔",
ModifyTime = DateTime.Now,
UpdateCount = c.UpdateCount + 1
}).ToSqlString(); Console.WriteLine(sql);
输出Sql
UPDATE `Product` `p1`
INNER JOIN ( SELECT @ProductId_1 AS `ProductId`,@ProductCode_2 AS `ProductCode`
UNION ALL
SELECT @ProductId_3 AS `ProductId`,@ProductCode_4 AS `ProductCode` ) `p1_0` ON `p1`.`ProductId` = `p1_0`.`ProductId`
SET `p1`.`ProductCode` = `p1_0`.`ProductCode`,`p1`.`ModifyUserId` = '666666',`p1`.`ModifyUserName` = '靓仔',`p1`.`ModifyTime` = @Now_1,`p1`.`UpdateCount` = ( `p1`.`UpdateCount` + 1 )
给SqlSugar一个优化建议的更多相关文章
- .NET程序的性能要领和优化建议
前几天在老赵的博客上看到,Bill Chiles (Roslyn 编译器的Program Manager)写了一篇文章叫做<Essential Performance Facts and .NE ...
- Unity 几种优化建议
转: http://user.qzone.qq.com/289422269/blog/1453815561?ptlang=2052 Unity 几种优化建议 最简单的优化建议: 1.PC平台的话保持场 ...
- Unity开发-你必须知道的优化建议
转自:http://blog.csdn.net/leonwei/article/details/18042603 最近研究U3D开发,个人认为,精通一种新的技术,最快最好的方法就是看它的documen ...
- Jquery学习笔记--性能优化建议
一.选择器性能优化建议 1. 总是从#id选择器来继承 这是jQuery选择器的一条黄金法则.jQuery选择一个元素最快的方法就是用ID来选择了. 1 $('#content').hide(); 或 ...
- memcached工作原理与优化建议
申明,本文为转载文:http://my.oschina.net/liuxd/blog/63129 工作原理 基本概念:slab,page,chunk. slab,是一个逻辑概念.它是在启动memcac ...
- mysql5.6优化建议
这篇文章主要介绍了MySQL5.6基本优化配置,详细分解了MySQL5.6需要优化的配置项,最终给出了一个优化案例,需要的朋友可以参考下 随着 大量默认选项的改进, MySQL 5.6比以前版 ...
- Android代码内存优化建议-OnTrimMemory优化
原文 http://androidperformance.com/2015/07/20/Android代码内存优化建议-OnTrimMemory优化/ OnTrimMemory 回调是 Androi ...
- MYSQL 优化建议
转自 http://coolshell.cn/articles/1846.html MYSQL 优化建议20条 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效 ...
- 用DBMS_ADVISOR.SQLACCESS_ADVISOR创建SQL Access Advisor访问优化建议
使用OEM方式来创建SQL Access Advisor访问优化建议,已经是四五年的事了,下面就来写写怎样使用DBMS_ADVISOR.SQLACCESS_ADVISOR来创建SQL Access A ...
- android应用的优化建议(转载)
首先,这是我在http://www.oschina.net/translate/40-developer-tips-for-android-optimization看到的一片文章,感觉挺有道理的,所以 ...
随机推荐
- Django基于一对多的正向查询和反向查询
1.正向查询 obj = models.User.objects.get(name='longge') name = obj.group.name print(name) # 肖邦组 2.反向查询 & ...
- Java SpringBoot 7z 压缩、解压
Java SpringBoot 7z 压缩.解压 cmd 7z 文件压缩 7z压缩测试 添加依赖 <dependency> <groupId>org.apache.common ...
- 使用RAMMap+PoolMon分析Windows内存异常使用问题
由于技术能力有限,文章仅能进行简要分析和说明,如有不对的地方,请指正,谢谢. 1 RAMMap和PoolMon工具简介 RAMMap和PoolMon都是微软Sysinternals的工具,前者可以从使 ...
- API 扫盲贴,8分钟快速搞懂 API 框架
API(应用程序编程接口)是一种传递信息和指令的工具,它通过不同的功能和协议等手段,允许不同的软件或系统之间进行通信和交互.作为程序员或开发人员,API 是你日常工作中必不可少的组成部分.在本文中,我 ...
- 2023-04-28:将一个给定字符串 s 根据给定的行数 numRows 以从上往下、从左到右进行 Z 字形排列 比如输入字符串为 “PAYPALISHIRING“ 行数为 3 时,排列如下 P
2023-04-28:将一个给定字符串 s 根据给定的行数 numRows 以从上往下.从左到右进行 Z 字形排列 比如输入字符串为 "PAYPALISHIRING" 行数为 3 ...
- 2020-12-02:mysql中,一张表里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记
2020-12-02:mysql中,一张表里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记 ...
- 2022-08-16:绳子总长度为M, 100 -> M, (6, 100) (7,23) (10,34) -> arr, 每一个长度的绳子对应一个价格,比如(6, 10)表示剪成长度为6的绳子,对应
2022-08-16:绳子总长度为M, 100 -> M, (6, 100) (7,23) (10,34) -> arr, 每一个长度的绳子对应一个价格,比如(6, 10)表示剪成长度为6 ...
- ET框架6.0分析一、ECS架构
概述 ET框架的ECS架构是从ECS原生设计思想变形而来的(关于ECS架构的分析可以参考跳转链接:<ECS架构分析>),其特点是: Entity:实体可以作为组件挂载到其他实体上,Enti ...
- 【从0开始编写webserver·基础篇#01】为什么需要线程池?写一个线程池吧
线程池 参考: 1.游双Linux高性能服务器编程 2.TinyWebServer 注:虽然是"从0开始",但最好对(多)线程.线程同步等知识点有所了解再看,不然可能有些地方会理解 ...
- MultiBoot SPI
对于7系列FPGA来说,计算器件启动时间按照以下公式: Config time = Bitstream size / (Config clk freq * Config interface width ...