我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

SqlSugar与Dapper的比较及常见问题解决方案

来源:网络 更新时间:2024-05-22 18:32:25

最近在群里有位小伙伴将Dapper迁移至SqlSugar时遇到了一些解决不了的问题,我将这些问题进行了汇总,并准备写一篇文章来详细讲解。

一、sql where in传参问题:

答: SqlSugar中的解决方法是

二、Dapper查询出来的Dynamic动态类型,支持获取不存在的属性

例如:SELECT UserName FROM users

可以通过 result.UserCode,不会报错

答: 在SqlSugar中,dynamic expandobject属性不存在时会报错,例如list[0].id如果不存在则会报错。这个需求还是头一次,因为不报错可能不严谨,SqlSugar暂时没有这个方法可以通扩展一个方法实现。

三、表值参数必须传typeName

在Dapper中是可以不用传的,而在SqlSugar 5.4.1.152+版本下面value可以传null了。

四、类型转换:在Dapper中很多类型做了兼容处理。

比如:数据库中是string,但值是int SELECT CAST( id as nvarchar) id FROM users

在Dapper中Query实体时,id允许定义为string。

答: 在SqlSugar中类型只支持int转string,不支持string转int,默认不支持反向转换。为了防止线上数据因错误数据导致系统出错,考虑到数据严谨性,可以加上特性让它支持转换。

五、Dapper 联表VO转换

不支持IEnumerable Query(string sql, Func map, object? param = null, IDbTransaction? transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null) =>

MultiMap(cnn, sql, map, param, transaction, buffered, splitOn, commandTimeout, commandType)

主要用于结果集返回之后,包装成一个有层次的对象。

答: SqlSugar同样可以支持一维对象变成2维对象。效果图

六、 获取Output

在Dapper执行ExecuteReader方法之后,还能通过Get("params")获取到。SqlSugar是直接无法获取的,需要包装一次,从DataReaderParameters中获取。

答: 暂时没有get方法可以通索引拿出来。