Dapper - Sql to Object从字符串隐式转换为int

时间:2011-08-15 17:40:13

标签: c# dapper

我正在使用dapper,并且遇到了将数据库值从db转换为int的问题。有没有人覆盖TypeMap以允许这个?

任何建议都会很棒。

1 个答案:

答案 0 :(得分:5)

Dapper对它所映射的类型很挑剔。这可以保护您免受以后弹出的各种令人讨厌的错误。

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

  • 010hello
  • 10a10
  • 374837483748374837483748374834784378437438743874384738473

将此类内容映射到Int32

没有明确的行动方案

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

选项1:影子属性

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中的映射功能,如果这样做,您将无法合并我们随时间添加到本地副本的任何修复。