从字符串到int的Sql到对象的隐式强制转换

本文关键字:转换 Sql 字符串 int 对象 | 更新日期: 2023-09-27 18:05:43

我正在使用dapper,并且我有从db到int转换字符串值的问题。是否有人重写了TypeMap来允许这样做?

从字符串到int的Sql到对象的隐式强制转换

Dapper对它映射的类型很挑剔。这可以保护您避免以后出现的各种严重错误。

例如,您的数据库可以返回:

  • 010hello
  • 10a10
  • 374837483748374837483748374834784378437438743874384738473

没有明确的方法将这类东西映射到Int32

也就是说,对于不需要更改IL生成的dapper,有两种策略可以遵循。

选项1:Shadow属性

class Foo
{
   public int Age 
   { 
      get 
      { 
       int age; 
       int.TryParse(ageString, out age); 
       return age;  
      } 
   }
   string ageString;
}
'' usage
cnn.Query<Foo>("select ageString from TableWithString");

选项2,SQL

强制转换
cnn.Query<Bar>("select cast(ageString as int) Age from TableWithString");

没有干净的方法来扩展Dapper的映射功能,如果你这样做,你将需要合并我们随时间添加的任何修复到你的本地副本。