Conversione Dapper di TinyInt

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

Domanda

Sto tentando di scrivere il mio DatabaseStorageBase per il mini-profiler e sto incontrando problemi nel mio

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

metodo. Dapper continua a urlarmi contro

Error parsing column 5 (level=0 - SByte)

Sto memorizzando il livello come tinyint(4) , quindi tinyint(4) che dapper non possa effettuare la conversione da Tiny Int a quello che sembra un Enum ( ProfileLevel )? Qualcuno potrebbe suggerire come dovrei memorizzare il livello in mysql in modo da poter risolvere i miei problemi di conversione?

Risposta popolare

Wow. che bel ficcanaso, sto anche implementando il mio mysqlstorage per miniprofiler e ottenere un errore simile con te.

miniprofiler utilizza enum come byte per MiniProfiler.Level e SqlTiming.ExecuteType utilizzando il tipo di dati tinyint per questo cast di ritorno di proprietà non valido che ha mostrato che restituisce Sbyte anziché byte. questo comportamento comportamento predefinito di mysql in quanto consente il ritorno del valore firmato di tinyint dove come sqlserver non come menzione qui:

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

Pertanto, la risoluzione è semplicemente alterando il campo tinyint di livello e executeType in tinyint unsigned restituirà il valore corretto (cast in byte). ora il mio mysqlstorage funziona come previsto ... la speranza può chiedere una risposta a sam :)



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow