升级指南

1、版本说明

 1.1 使用5.0.2 及以上版本  

(1) 5.1.3.144 版本自定分表出现问题就使用特性方式配置 不要在new db时配置

(2) 5.1.3.143 版本调整了 SqlFunc.DateValue 选的返回值调整了和DayOfWeek枚举一致保证了多库统一

(3) .Net Core MySql 注意:5.1.3.40以前版升级到40以后需要看文档异步用法,新驱动对异步严谨了

 1.2 使用5.0.2 以下版本

(1) 检查有没有设置initKey,没设置的要注意了

 DbType = SqlSugar.DbType.SqlServer,
 ConnectionString = Config.ConnectionString,
 InitKeyType = InitKeyType.Attribute,//这个默认值换了,如果以前没有设置需要改成Systemtable
 IsAutoCloseConnection = true,

(2) UpdateColumns报错名字改成SetColumns

(3) 部分扩展方法报错需要引用新命名空间

(4) mysql.data 使用8.0.21 或者  6.9.12 ,禁止用 6.0.10.xxx

(5) SqlSugarClient换成SqlSugarScope 并且用单例模式

 1.3 使用4.0以下版本

 不支持升级

2、常见问题

 2.1 IsShardSameThread移除  

用SqlSugarScope单例模式取代低版本(5.0.2以下)的SqlSugarClient+IsShardSameThread效果一样,并且支持异步,

 2.2 升级后出现偶发性错误

新版本移除了SqlSugarClient(5.0.2以下)的部分线程安全支持

方案1:

你可以把你的 SqlSugarClient 替换成单例的 SqlSugarScope (SqlSugarScope要用单例) 具体用法看 文档入门

如果不想替换那就需要找到db在哪里出现了跨线程使用

方案2:

报错代码加上

db.CopyNew().Queryable<Order>().ToList();//强制new出一个对象保证线程安全
//如果用到事务
var mydb=Db.CopyNew();
mydb.BeginTran();
mydb.Insertable(list).ExecuteCommand();
mydb.Insertable(list2).ExecuteCommand();
mydb.CommandTran();

 2.3 出现And变成& Or变成|

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

手动拼表达式不要写错了:

image.png

改动如下

%2A~@%)KN5CDTGU8KKFUBKK.png

红圈中就是错的And对应C#中的& 而AndAlso才是&&

关闭
果糖网