通八洲科技

C# Dapper常见错误及解决方法 Dapper疑难杂症排查

日期:2025-12-26 00:00 / 作者:星降
Dapper常见报错集中在字段映射不一致、参数化查询错误、空值类型转换异常、连接未释放或事务未提交四类。需通过Column特性、统一命名、可空类型、using包裹连接等方式解决。

字段映射不一致导致查询失败

实体类属性名和数据库字段名不匹配是最常见的报错原因之一。比如数据库字段是 user_name,而 C# 类里写的是 UserName,Dapper 默认不会自动转换下划线命名。

解决方法:

参数化查询出错:“必须声明标量变量 @xxx”

这个错误通常不是 SQL 写错了,而是你用了字符串拼接代替参数化,或者参数对象结构与 SQL 中的参数名对不上。

常见情况:

空值引发的类型转换异常

数据库字段允许 NULL,但 C# 属性是 intDateTime 这类非空值类型,查到 NULL 时就会抛“指定的转换无效”。

应对方式:

连接未释放或事务未提交

Dapper 不管理连接生命周期,它只负责执行 SQL。如果忘了 using 或没调 conn.Open(),运行时可能卡住、超时或报“连接已关闭”。

稳妥写法:

基本上就这些。多数 Dapper 报错都落在映射、参数、空值、连接四块,理清这几点,90% 的问题能快速定位。