2011-07-16 21 views
14

Por favor, ¿alguien ha encontrado con la situación anterior con Dapper y MySQL. En todas mis tablas en MySQL (5.1), donde el tipo de datos es BIT (1) o BIT, Dapper simplemente devuelve ese campo como ulong (UInt64). Estoy usando MySql.Data.MySqlClient y no tengo ese problema con EF, que es a lo que intento convertir.mapeo Dapper MySql BIT (1) tipo de datos a ULONG en lugar de booleano

Gracias por cualquier ayuda.

+0

mi instinto me dice que esto es un problema con el controlador de MySQL ... se puede repro el problema con ado.net recta ... por ejemplo, seleccionar la columna y obtener el valor ... mira el tipo? –

+0

La sencilla solución es agregar una propiedad o campo sombra a su tipo de –

+0

@ Sam Azafrán: No podía reproducirlo con ADO.NET recta y también intentado PetaPoco, que no tenía el mismo problema. Traté de investigar más a fondo, MySql en realidad devuelve 0 para falso y 1 para verdadero, por eso eso se muestra como ulong todavía me supera. ¿Puedes ampliar lo que quieres decir con la propiedad de la sombra y cómo puedo usarlo para resolverlo? –

Respuesta

3

En MySQL, el tipo Boolean se asigna a Tinyint(1) con MySQL. Tal vez tendrá que convertirlo en Boolean (0 = falso/1 = verdadero), Convert.toBoolean(UInt64) puede ayudarlo (consulte http://msdn.microsoft.com/en-us/library/33f2zy48.aspx).

@Christian Droulers: El comportamiento de SQLite es similar.

+1

+1 Convertir.toBoolean (UInt64) funcionó para mí. –

1

¿Por qué no hacer el casting de la consulta SQL?

cast(myField using TINYINT(1)) as myField 

No estoy seguro del tipo aquí, pero así es como hago cuando mi tipo de db no coincide con el de mi objeto.

Cuestiones relacionadas