我正在使用Dapper加载int?
值。 int?
的值存储在SQL Server数据库的VARCHAR列中(我无法更改)。有时,该列包含包含字母字符的无效数据。
发生这种情况时,我会看到此错误:
Error parsing column 5 (Foo=ABC123 - String) ---> System.FormatException: Input string was not in a correct format.
如何让Dapper忽略无效值并改用null?
答案 0 :(得分:4)
您可以修改SQL以解析并在SQL Server本身上相应地返回值。这样,您的调用代码将不会发生任何变化。
我会做类似的事情:
select case when isnumeric(foo) = 1 then foo else null end foo from table;
答案 1 :(得分:2)
Dapper是简单的映射器;它不会为您执行这种数据类型转换。你必须要把戏。
我看到的唯一(坏)选项是在您的类中包含 1
1
2
2
3
属性,并将dapper映射到该属性,而不是您的string
属性。然后将int?
属性映射到int?
属性,并在两者之间添加一些 handling 代码。
string
答案 2 :(得分:2)