Comme mentionné par @TyCobb dans les commentaires, ce n'est pas un problème avec stocker un Enum comme un char, mais plutôt avec comment les propriétés de type anonymes sont déclarées.
types anonymes peuvent déduire et générer des noms pour « références de propriété simples » où aucune transformation se fait à la propriété lors de l'affectation, comme
new { account.AccountStatus }
Dès que vous transformez les données ou du nouveau nom propriété, vous devez déclarer explicitement le nom de la propriété:
new { Status = (char)account.AccountStatus }
en ce qui concerne lit, vous pouvez mapper à un char
via pimpant, puis jeté comme ENUM dans votre sélection (ou transformer les données de quelque manière est la plupart appropria te):
var result = connection.Query<char>(
"select char column from table where Status = @Status",
new {Status = (char)account.AccountStatus}
).Select(x => (AccountStatus)x).FirstOrDefault();
En outre, Dapper gère également AccountStatus : byte
cas natively, vous pouvez donc être en mesure de retourner directement la valeur que votre ENUM:
var result = connection.Query<AccountStatus>(
"select char column from table where Status = @Status",
new {Status = (char)account.AccountStatus}
).FirstOrDefault();
Je ne pense pas que votre question est liée à l'erreur. Il veut que vous lui donniez un nom de propriété parce que c'est un type anonyme. 'new {Foo = (char) account.AccountStatus}' – TyCobb
Merci pour cela - je voudrais encore pouvoir résoudre cela en termes plus généraux via une carte de type ou autrement ainsi il fonctionne aussi pour les lectures – TJF