Dapper conversión de TinyInt

asp.net-mvc-3 c# dapper mvc-mini-profiler mysql

Pregunta

Estoy intentando escribir mi propio DatabaseStorageBase para mini-profiler, y estoy teniendo problemas en mi

private List<T> LoadFor<T>(DbConnection conn, object idParameter)

método. Dapper sigue gritándome con

Error parsing column 5 (level=0 - SByte)

Estoy almacenando el nivel como tinyint(4) , así que tinyint(4) que tinyint(4) no puede hacer la conversión de Tiny Int a lo que parece un Enum ( ProfileLevel ). ¿Podría alguien sugerir cómo debo almacenar el nivel en mysql para poder resolver mis problemas de conversión?

Respuesta popular

Guau. Que genial insidente, también estoy implementando mi propio mysqlstorage para miniprofiler y obtengo un error similar contigo.

miniprofiler utiliza enum como byte para MiniProfiler.Level y SqlTiming.ExecuteType usando tinyint datatype para esta propiedad devuelve conversión no válida que muestra que devuelve Sbyte en lugar de byte. este comportamiento predeterminado del comportamiento de mysql ya que permite la devolución del valor firmado de tinyint donde como sqlserver no se menciona aquí:

http://forums.mysql.com/read.php?38,5524,5581#msg-5581

http://social.msdn.microsoft.com/Forums/br/adonetefx/thread/8b0949ba-03e8-4637-baa1-d2b4ff0771f0

Por lo tanto, la resolución es simplemente alterar el campo tinyint de level y executeType en tinyint sin firmar devolverá el valor correcto (conversión a byte). ahora mi mysqlstorage funciona como esperaba ... espero que puedas pedirle permiso a sam :)



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