Sono nuovo di Dapper e sto cercando di capire se è in grado di gestire le stringhe del database di mapping su enumerazioni; non succede per me di default.Dapper: conversione di una stringa in un enum
Ad esempio, dire io uso questo SQL
select customer_type from customers
e questa classe
public class Customer
{
...
public CustomerType CustomerType { get; set; }
...
}
con questo enum
public enum CustomerType
{
Unknown,
SomeCustomerType,
...
}
In questo caso finisco sempre con l'enumerazione di default valore (Sconosciuto) piuttosto che una mappatura del valore stringa dal database.
Qualcuno sa come posso ottenere questo?
Modifica: Modifica: So che questo è possibile con un campo numerico perché un numero verrà convertito in enum, ma questo ha lo svantaggio di dover garantire che l'id del database e l'enum siano mantenuti sincronizzati. Sto cercando qualcosa di simile ma con una corda.
grazie, ma ho già visto quella risposta. È davvero solo una soluzione. Preferirei non aver creato una proprietà shadow per ogni proprietà enum che ho. – johnB
Perché non utilizzare semplicemente una colonna numerica nel DB? Mantenerli sincronizzati è facile come dare valori enum ai valori espliciti (anche se è ridondante) per evitare che cambino continuamente. Questo è anche molto meno dispendioso e più facile da controllare per coerenza rispetto a una stringa. – Alejandro
Sto lavorando con un codebase e un database di grandi dimensioni, quindi sarebbe molto lavoro. Ha anche lo svantaggio di fallire silenziosamente se non si sincronizza. – johnB