架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 908|回复: 1

[资料] 解决 Dapper.Contrib 报错“值对于 Int32 太大或太小”问题

[复制链接]
发表于 2023-8-6 14:04:48 | 显示全部楼层 |阅读模式
需求:在使用 Dapper.Contrib 执行 Insert 方法的时候,插入单条数据对于自增主键字段的返回值为插入后的值,当返回值大于 2147483647 的时候,Dapper.Contrib 会抛出异常“值对于 Int32 太大或太小”问题。

使用 Dapper.Contrib 插入数据的时候,报错“值对于 Int32 太大或太小”,此时数据库已经插入成功!怀疑是 ORM 框架的问题,然后在 GitHub 上面搜索,发现是一个已知的问题,Dapper 团队因为担心影响太大,一直没有修复,也有其他作者给 Dapper 提供 pr,也被关闭了,如下图:

https://github.com/DapperLib/Dapper.Contrib/issues/4

QQ截图20230806133508.jpg

异常原因是获取到自增值后,以 Sql Server 适配器为例,强制转换成 int 类型报错,int 最大值为(int.MaxValue):2147483647,如下图:

QQ截图20230806134052.jpg

复现方法,新建一个表,自增主键从 2147483648 开始,SQL 脚本如下:

引用 Dapper.Contrib 包,执行插入操作,代码如下:

报错如下:

QQ截图20230806135737.jpg

解决方案

将 Dapper.Contrib 替换成 Dapper.Contrib.Unofficial 包,命令如下:

测试不再报错,如下图:

QQ截图20230806140246.jpg

提示:Dapper.Contrib.Unofficial 没有经过完整测试,请自行测试后使用!

(完)





上一篇:Qv2ray 在 Windows 连接 Trojan-Go 服务
下一篇:SQL Server 找出 varchar 转换为 bigint 出错的数据
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-8-6 14:14:21 | 显示全部楼层
修改后 GitHub 地址:https://github.com/itsvse/Dapper.Contrib
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-27 16:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表