Dapper - Sql to Object從字符串隱式轉換為int

c# dapper

我正在使用dapper並且在將數據庫中的字符串值轉換為int時遇到問題。有人覆蓋TypeMap以允許這個嗎?

任何建議都會很棒。

一般承認的答案

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中的映射功能,如果這樣做,您將無法合併我們隨時間添加到本地副本的任何修復。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因