Mappatura dei modelli Dapper

.net c# dapper data-mapping

Domanda

Ho giocato con Dapper e ho una domanda. C'è un modo per me di essere in grado di avere una proprietà di tipo enumeratore nella mia classe POCO e usare Dapper? Sembra che ogni volta che aggiungo una proprietà che è di tipo Enumerator ottengo la seguente eccezione:

System.NotSupportedException: Il tipo: * my_enum_type * non è supportato da dapper

Mi sto perdendo qualcosa qui? Esiste un attributo che posso allegare a queste proprietà per specificare quali di esse stanno eseguendo il mapping alle colonne della tabella del database?

Risposta popolare

Questo è un vecchio bug in dapper, assicurati di usare la versione più recente. Dapper non eseguiva alcun filtraggio sulle proprietà dei tipi di input.

Ok ho capito questo ed è stata colpa mia per non aver visto questo nel 1 ° posto. Questo è quello che stavo facendo inizialmente:

Dim result = conn.Query("SELECT * FROM Users WHERE UserID = @UserID", New User With {.UserID = userID})

Ma quello che doveva essere fatto è:

Dim result = conn.Query("SELECT * FROM Users WHERE UserID = @UserID", New With {.UserID = userID})

In altre parole, dichiarare param come tipo anonimo è essenziale. Se dichiari param come un tipo specifico e quel tipo contiene una proprietà di tipo che non è coperta dal codice dapper (come Enum), il codice si arresta in modo anomalo con l'errore sopra citato. La mia classe User aveva una proprietà di tipo Enum e stava causando il problema.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché