Dapper - Sql à l'objet distribution implicite de chaîne en int

c# dapper

Question

J'utilise dapper et j'ai des problèmes avec la conversion d'une valeur de chaîne de la base de données en int. Quelqu'un at-il ignoré le TypeMap pour permettre cela?

Toute suggestion sera appréciée.

Réponse acceptée

Dapper est pointilleux sur les types qu'il mappe. Cela vous protège de toutes sortes d'erreurs désagréables qui apparaissent plus tard.

Par exemple, votre base de données pourrait renvoyer:

  • 010hello
  • 10a10
  • 374837483748374837483748374834784378437438743874384738473

Il n'y a pas de plan d'action clair pour mapper ce genre de choses à un Int32

Cela dit, il existe deux stratégies que vous pouvez suivre avec Dapper et qui ne nécessitent pas de modification de la génération de IL.

Option 1: Propriété Shadow

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");

Option 2, conversion en SQL

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

Il n'y a pas de moyen propre d'étendre la fonctionnalité de mappage dans Dapper, si vous le faites, vous serez obligé de fusionner tous les correctifs que nous ajoutons au fil du temps à votre copie locale.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi