6

私はdapperを使用していますが、dbからintへの文字列値のキャストに問題があります。これを可能にするためにTypeMapをオーバーライドした人はいますか?

どんな提案も素晴らしいでしょう。

4

1 に答える 1

6

Dapperは、マップするタイプに気を配っています。これにより、後でポップアップするあらゆる種類の厄介なエラーから保護されます。

たとえば、データベースは次を返す可能性があります。

  • 010hello
  • 10a10
  • 374837483748374837483748374834784378437438743874384738473

この種のものをにマッピングするための明確な行動方針はありませんInt32

とは言うものの、IL生成の変更を必要としないdapperで従うことができる2つの戦略があります。

オプション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のマッピング機能を拡張するクリーンな方法はありません。そうすると、時間の経過とともにローカルコピーに追加する修正をマージする必要がなくなります。

于 2011-08-16T02:01:25.300 に答える