使用Dapper QuerySingleOrDefault报错:System.FormatException问题排查
Dapper 查询出现 System.FormatException 的可能原因
针对你提供的代码,出现System.FormatException: Input string was not in a correct format错误,常见原因如下:
DbString 配置与数据库字段不兼容
你设置了IsAnsi = true(表示ANSI编码),如果数据库中username字段是nvarchar(Unicode类型),两者编码不匹配会导致参数转换失败。另外,IsFixedLength = true且Length = 255,如果数据库字段是可变长度类型(比如varchar(50)),强制固定长度的参数格式会和字段定义冲突。实体类与查询结果字段类型不匹配
错误可能不是来自参数传递,而是Dapper将查询结果映射到Data类时出错。比如数据库中某个字段是int类型,但Data类对应的属性定义为string,Dapper尝试转换时会抛出格式错误。DbString 参数长度设置不合理
如果username字段的实际长度小于255,同时开启了IsFixedLength = true,Dapper会自动给参数值补空格到255位,若数据库字段不接受超长或固定长度的输入,会触发格式错误。数据库驱动/连接方式问题
若使用的数据库驱动(比如OleDb)对Dapper的DbString类型支持不佳,参数解析时会出现格式错误,建议确认是否使用了对应数据库的官方驱动(比如SQL Server用SqlClient)。
内容的提问来源于stack exchange,提问作者Youssef Mohamed
相关产品推荐
相关产品推荐

