TinyInt的精巧轉換

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

我正在嘗試為mini-profiler編寫自己的DatabaseStorageBase,而且我遇到了問題

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

方法。 Dapper一直對我大吼大叫

Error parsing column 5 (level=0 - SByte)

我將level存儲為tinyint(4) ,所以我假設dapper無法從Tiny Int轉換為看起來像Enum( ProfileLevel )的東西?有人可以建議我應該如何在mysql中存儲級別,以便我可以解決我的轉換問題?

熱門答案

哇。多麼酷的事實,我也為miniprofiler實現我自己的mysqlstorage並得到類似的錯誤。

miniprofiler使用枚舉作為MiniProfiler.Level的字節和SqlTiming.ExecuteType使用tinyint數據類型為此屬性返回無效的轉換,顯示它返回Sbyte而不是byte。這個行為的mysql默認行為,因為它允許返回tinyint的簽名值,其中sqlserver不在這裡提到:

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

因此,分辨率只需將level的tinyint字段和executeType改為unsigned tinyint即可返回正確的值(強制轉換為byte)。現在我的mysqlstorage按預期工作..希望可以問拉請求到山姆:)



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow