2011-08-15 17 views

答えて

4

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

たとえば、あなたのDBは、返すことができます:

  • 010hello
  • 10a10
  • 374837483748374837483748374834784378437438743874384738473

は、原料のこの種Int32

にマッピングするための行動の明確なコースがありません

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

オプション1:shadowプロパティSQLにキャスト

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、

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

あなたがそうあなたがしなければdapperのマッピング機能を拡張するために何のクリーンな方法は、ありません私たちがあなたのローカルコピーに追加した修正をマージする必要があります。

+0

大変ありがとうございます。私はオプション1について考えていましたが、他に解決策があるかどうかを見たいと思っていました。 – Arnej65