当前位置:网站首页 > 技术博客 > 正文

sqlalchemy异步查询



在原有方法后面加Async就是异步方法了

我们可以使用SqlFunc这个类调用Sql函数,用法如下:

支持一些常用的C#函数

. ToString .Contains .Length.ToLower .ToUpper .ToSubstring

.Equals .HasValue .Replace .EndsWith .StartsWith .Trim

.HasValue .Value .AddDays(AddHours等) 和 常用的 Convert.ToInt32 等

三元 xx??0 时间.DayOfWeek 时间.Date 时间.Day等 (时间-时间).TotalDays

三元判段 ,相当于 it.id==1?1:2

case when

IsNulll4.6.0.1

请升级到5.0.51+,更好的支持了时间格式化

获取数据库时间4.6.0.1

是否是同一天

是否是同一月

是否是同一年

是否是同一时间 (dataType 可以是年、月、天、小时、分钟、秒和毫秒)

在当前时间加一定时间(dataType 可以是年、月、天、小时、分钟、秒和毫秒)

在当前时间加N天

DateDiff 计算时间差( 已知MSSQL支持)

周数、周几

不包含时间转换,时间转换看标题【时间函数】

四舍五入 精度  (5.0.4)

绝对值函数 (5.0.4)

截取字符串

替换字符串

转小写

转大写

去前后空格

类型转换

指定位置替换

字符串比大小,字符串比较,字符串对比

判段是NULL或者空

判段不是NULL

按位与 按位或

判段大于0并且不等于NULL

模糊查询 like %@p%

模糊查询 not like %@p%

In单列操作

thisValue=new string[]{1,2,3}

paramterValie =it.Id

生成的Sql就是 id in (1,2,3)

In多列操作 51.4.67-preview04

模糊查询 like @p%

模糊查询 like %@p

等于

等于(支持 is null 的参数)

范围判段

字符串逗号分割后是否存在提定的值 (5.1.3.51-preview01)

文档:https://www.donet5.com/Home/Doc?typeId=2231

需要实体配置导航

注意:不需要  .Includes 就能使用导航函数

需要实体配置导航

5.1.1版本支持,也要数据库支持

支持JObject JArray ,实体 ,集合等类型

SqlFunc.JsonLike

模糊查询,兼容所有库,性能一般适合小数据处理

SqlFunc.JsonLike(it.JsonObj,"a")

等于Like '%a%'

支持所有数据库

注意:大小写要一样

(1)查询Id的值{id:1}

(2)多层级查询,查询id 的值 {obj:{id:"a"}}

如果不支持请升级

支持 PostgreSQL

支持 SqlServer2017+

支持 MySql (只能字段)

支持 Oracle (只能字段)

Sqlite升级到:5.1.4.148

支持 Sqlite

SqlFunc.JsonIndex

需要升级到:5.1.4.113-preview2+


获取json数组的索引对象

如果是['a','c'] 那么返回a

PostgreSQL

MySql

SqlServer2017

SqlFunc.JsonParse转成JSON类型支持PostgreSQL

SqlFunc.JsonContainsFieldName

第一层是否存在id (如果多层级需要结合JsonField)

支持PostgreSQL

需要升级到:5.1.3.36

["a","b","c"] 这种数组里面是否存在字符串 a  

注意:如果是数字可以 1或者"1" 都试一下

也就是 [1,2] 参数用int类型

也就是 ["1","2"] 参数用string类型

注意:如果是多个值可以结合【动态表达式】

https://www.donet5.com/Ask/9/26342

支持PostgreSQL

支持MySql

支持SqlServer(最新版本)

SqlFunc.JsonListObjectAny(it.json, "Name", "a")

需要升级到:5.1.3.36

[{"name":"a"},{"name":"b"}] 集合中是否存在 name=a的一项

注意:数字和字符串差异

注意:如果是多个值可以结合【动态表达式】

https://www.donet5.com/Ask/9/26342

支持PostgreSQL

支持MySql

支持SqlServer(最新版本)

SqlFunc.JsonArrayLength(it.Json)[1,2,3]获取数组长度

支持PostgreSQL

SqlSugar 5.1.4.115

支持MySql

支持 SqlServer

除了SqlServer外很多库对+不友好可以使用

如果还有不支持的可以写字符串

https://www.donet5.com/Home/Doc?typeId=1225

自定义函数

所谓按实体对象更新就是:db.Updateable(参数对象) 有参数的重载

根据实体更新需要给实体配置主键,参考文档实体配置

ExecuteCommand 返回受影响行数 , update where 如果没找到那么就会返回 0ExecuteCommandHasChange返回bool ,等同于 bool isChange= ExecuteCommand()>0

不更新 TestId和CreateTime

只更新 Name 和 CreateTime

追加AOP赋值列 5.1.4.106-preview19+

注意:高版本支持批量 ,用该方法批量性能差些,因为列不同所以没必然用批量语法

用法同上唯一区别就是用WhereColumns指定条件

可以多列

注意:单条操作都支持 ,批量只支持部分库,多库考虑批量操作不建议用这个方法

请升级新版本 ,老版本存在BUG,所以没公开这个函数

(1) SET=字段+固定变量  SqlSugarCore 5.1.4.72 +

(2) SET=字段+集合变量 SqlSugarCore 5.1.4.77 preview02 +

表达式更新比较像SQL而不是对象

更新 name,createtime 条件id=11

只更新 name 条件id=1

将datatable转成字典集合插入

https://www.donet5.com/Home/Doc?typeId=2423

Object、接口和抽象类:

ORM默认不支持修改主键,这种需求有2种方案

1、删除当前记录,然后在添加一条新记录(因为主键都可以更新,说明没有外部引用,可以直接删掉在加

2、新建一个没有主键的实体,指定表名用Wherecolumns更新

sql

https://www.donet5.com/Home/Doc?typeId=2432

方式1 (5.1.3.42-preview01):通过特性指定默认值

注意:

表达更新:SetColumns(it=>new class{ name=it.name},true) 如果用到SetColumn需要加个true

实体更新:无需任何操作

方式2:通过AOP实现,文档搜索:AOP , 看标题2

注意:方式1和方式2不要冲突了

版权声明


相关文章:

  • iis ftp 断点续传2024-12-31 15:30:01
  • vc2010安装步骤2024-12-31 15:30:01
  • 代码 对比2024-12-31 15:30:01
  • layer获取弹出层2024-12-31 15:30:01
  • 时间序列分析预测模型2024-12-31 15:30:01
  • java并发编程实战和并发编程的艺术2024-12-31 15:30:01
  • sql语句编写技巧2024-12-31 15:30:01
  • devc++的使用方法2024-12-31 15:30:01
  • select语句中的where说明2024-12-31 15:30:01
  • ce认证机构28342024-12-31 15:30:01