Paramètre Dapper mapping String comme AnsiString

ado c# dapper interbase

Question

Je dois passer des paramètres à l'instruction SQL, avec Firebird ADO, tout fonctionne bien, mais avec InterBase ADO, il y a un problème. Mon code:

result = conn.Query<DestClass>(sqlCmd, new
{
  stringParam = stringVal,
  intParam1 = intVal1,
  intParam2 = intVal2
}).Single();

Avec ça, j'ai FormatException , mais quand je définis des paramètres avec DynamicParameters et que DbType.AnsiString configure DbType.AnsiString pour stringParam, SQL fonctionne bien. Mais j'ai beaucoup d'endroits dans mon code quand j'ai besoin de passer de la ficelle et je ne veux pas changer cela en tout lieu.

Ensuite, j'ai trouvé que je Dapper.SqlMapper.AddTypeMap(typeof(String), DbType.AnsiString); utiliser Dapper.SqlMapper.AddTypeMap(typeof(String), DbType.AnsiString); mais je ne peux pas. Common Language Runtime detected an invalid program.

Comment résoudre ce problème?

MODIFIER

Il semble que le problème soit résolu dans Dapper v1.22.

Réponse d'expert

Il existe une proposition pour ajouter un attribut au niveau de l'assembly du formulaire:

[assembly:SomeName(blah)]

cela contrôlerait le type de chaîne par défaut pour tous les types provenant de cet assembly. Cela permettrait probablement de réaliser la plupart de vos besoins (bien que cela pousse le swing dans l'autre sens, vous devez donc dire aux autres utilisateurs ce qu'ils doivent faire). Je suis en train de pirater activement Dapper, alors je m'attendrais à ce que cela se concrétise à court terme.

Notez que vous n'avez pas besoin d'utiliser DynamicParameters ; vous pouvez aussi utiliser:

stringParam = new DbString { Value = stringVal, IsAnsi = true }


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