不允许从数据类型 sql_variant 到 nvarchar 的隐式转换。请使用 CONVERT 函数来运行此查询。

Asp.net/C#的项目中向数据库插入数据时引发异常:不允许从数据类型 sql_variant 到 nvarchar 的隐式转换。请使用 CONVERT 函数来运行此查询。




不允许从数据类型 sql_variant 到 nvarchar 的隐式转换。请使用 CONVERT 函数来运行此查询。


最佳解决方案

原因分析

原因一般是程序中指定的字段类型与数据库中的类型不匹配。 我这里使用的Furion.App的DapperRepository进行数据插入,实体对象定义的类型是object,数据库相应字段类型是 nvarchar, DapperRepository把object类型映射为sql_variant,也就是sql server数据库的基类型,和navarchar无法直接转换导致报错。

一般注意两个方面可以避免类似问题:

1、明确指定的实体对象每一个字段的数据类型,不要直接使用object   。错误示范如下:
图片.png


2、保证实体字段的数据类型与数据库保持一致,比如string 对应navarchar(max)。 如果string  对应bigint/int类型的数据库字段类型,就可能引发类似错误

彩色的黑 T0 被采纳率50%
2021-08-11 10:47
打赏 0 1
页面统计
1343 访问
0 帮助
0.00 打赏

hierror 2019 © hierror.com 京ICP备13026190号-1

通知消息
  • 暂无任何消息