Dapper model mapping

.net c# dapper data-mapping

Pregunta

He estado jugando con Dapper y tengo una pregunta. ¿Hay alguna manera de poder tener una propiedad de tipo enumerador en mi clase POCO y usar Dapper? Parece que cada vez que agrego una propiedad que es del tipo Enumerator obtengo la siguiente excepción:

System.NotSupportedException: el tipo: * my_enum_type * no es compatible con dapper

¿Me estoy perdiendo de algo? ¿Existe un atributo que pueda adjuntar a estas propiedades para especificar cuál de ellas se está asignando a las columnas de la tabla de la base de datos?

Respuesta popular

Este es un viejo error en dapper, asegúrese de usar la última versión. Dapper no realizaba ningún filtrado en las propiedades de los tipos de entrada.

Ok, me di cuenta de esto y fue mi culpa por no ver esto en el 1er lugar. Esto es lo que estaba haciendo inicialmente:

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

Pero lo que se debe hacer es:

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

En otras palabras, declarar param como tipo anónimo es esencial. Si declara param como un tipo específico y ese tipo contiene una propiedad de tipo que no está cubierta por un código apuesto (como Enum), entonces el código falla con el error mencionado anteriormente. Mi clase de usuario tenía una propiedad de tipo Enum y estaba causando el problema.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow