2012-01-12 86 views
5

的小巧玲瓏的轉換我試圖寫我自己的DatabaseStorageBase爲小型探查,和我遇到的問題在我TINYINT

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

方法。小巧玲瓏不斷在我吼與

Error parsing column 5 (level=0 - SByte) 

我存儲水平tinyint(4),所以我假設短小精悍不能進行轉換,從微小的詮釋是什麼樣子的枚舉(ProfileLevel)?有人可以建議我應該如何在MySQL中存儲級別,以便我可以解決我的轉換困境?

+0

你不需要繼承基地,你可以簡單地實現存儲接口 – 2012-02-10 07:39:50

+0

我試圖實現存儲接口,但Save方法仍然希望我保存關卡。有沒有辦法讓整潔的產生枚舉的整數值?如果不是,它看起來像我必須手動映射它。 – JesseBuesking 2012-03-02 03:44:43

+0

@SamSaffron我忘了在我的評論中標記你...我的壞。 – JesseBuesking 2012-03-02 20:25:23

回答

2

哇。什麼是一個很酷的事件,我也爲miniprofiler實現了我自己的mysqlstorage,並且得到了類似的錯誤。

miniprofiler使用枚舉作爲MiniProfiler.Level的字節和SqlTiming.ExecuteType 對此屬性使用tinyint數據類型返回無效的轉換,它表明它返回Sbyte而不是字節。這種行爲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

因此,分辨率僅僅通過改變級的TINYINT場並將executeType轉換爲無符號的tinyint將返回正確的值(轉換爲字節)。現在我的mysqlstorage按預期工作..希望可以向拉姆請求山姆:)

+0

我會試試這個週末和回來後發生的事情,但它聽起來像它可能是我的問題的解決方案:D – JesseBuesking 2012-10-09 21:00:11