Ich verwende Dapper für eine Datenbank, in der Strings hauptsächlich in Gibt es einen einfacheren Weg, dies zu tun? Aktualisieren Das Ändern der typeMap war nicht ausreichend. Ich musste auch einige VarChar
columns gespeichert sind. Standardmäßig verwendet Dapper NVarChar
-Parameter beim Generieren von Abfragen und während ich jeden String-Parameter, den ich mit DbString
verwende, umschließen kann, wäre es großartig, AnsiStrings standardmäßig zu verwenden und DbString
für NVarChar
case. Ich habe versucht, die Typenkartierung in der Dapper-Quelle von DbType.String
auf DbType.AnsiString
zu ändern, was jedoch einen Fehler in der IL-Generierung für die Parameter delegate verursacht (wirft InvalidProgramException
). if (dbType == DbType.String)
checks ändern. Jetzt funktioniert es!
Um ansistrings standardmäßig verwenden zu können, musste ich (siehe Dapper 1.3 source von NuGet):
DbType.AnsiString
auf L164 statt DbType.String
zu verwenden
CreateParamInfoGenerator
die Prüfungen in L960, L968, L973, um DbType.AnsiString
sowie DbType.String
. Das Problem mit der ungültigen IL scheint zu sein, dass der spätere Zweig des Codes auf L1000 nach typeof(string)
sucht, während die vorhergehenden Zweige DbType
verwenden.
Damit ist alles wieder schön - keine Index-Scans mehr!