Dapper - SQLからObjectへの暗黙のキャストから文字列へのキャスト

c# dapper

質問

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

どんな提案も素晴らしいだろう。

受け入れられた回答

Dapperは、それがマップするタイプについては不安です。これは後でポップアップするあらゆる種類の不快なエラーからあなたを守ります。

たとえば、あなたのdbが返すことができる:

  • 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のマッピング機能を拡張するためのきれいな方法はありません。そうすることで、私たちがローカルコピーに追加した修正をマージする必要があります。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ