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