我正在使用dapper,并且在将字符串值从db强制转换为int时遇到问题。是否有人重写TypeMap允许这样做?

任何建议将是巨大的。

最佳答案

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

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

  • 010hello
  • 10a10
  • 374837483748374837483748374834784378437438743874384738473

  • 将此类内容映射到Int32尚无明确的行动方案

    就是说,精简程序可以遵循两种策略,不需要更改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中的映射功能,如果这样做,您将不得不将我们随时间增加的所有修订合并到本地副本中。

    关于c# - Dapper-从字符串到int的Sql to Object隐式转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7068438/

    10-12 04:19
    查看更多