请有人使用Dapper和MySQL来了解上述情况。在MySQL(5.1)的所有表中,数据类型是BIT(1)或BIT,Dapper只返回ulong(UInt64)这样的字段。我正在使用MySql.Data.MySqlClient,并且我没有EF这样的问题,这正是我想要从中转换而来的。Dapper将MySql BIT(1)数据类型映射为ulong而不是布尔型
感谢您的任何帮助。
请有人使用Dapper和MySQL来了解上述情况。在MySQL(5.1)的所有表中,数据类型是BIT(1)或BIT,Dapper只返回ulong(UInt64)这样的字段。我正在使用MySql.Data.MySqlClient,并且我没有EF这样的问题,这正是我想要从中转换而来的。Dapper将MySql BIT(1)数据类型映射为ulong而不是布尔型
感谢您的任何帮助。
在MySQL中,使用MySQL将Boolean
类型映射到Tinyint(1)
。也许你将不得不将它投到Boolean
(0 = false/1 = true),Convert.toBoolean(UInt64)
可能会帮助你(请参阅http://msdn.microsoft.com/en-us/library/33f2zy48.aspx)。
@Christian Droulers:SQLite的行为是相似的。
+1 Convert.toBoolean(UInt64)为我工作。 –
你为什么不在你的SQL查询中进行转换?
cast(myField using TINYINT(1)) as myField
不知道这里ABOT的类型,但是这是当我的数据库类型不匹配我的对象我的方式。
我的直觉告诉我,这是一个与MySQL驱动程序的问题...你可以用直ado.net repro问题...例如选择列并获得值...看看类型? –
简单的解决方法是将阴影属性或字段添加到您的类型 –
@Sam Saffron:我无法用直线ADO.NET重现它,并且我尝试了PetaPoco,它没有相同的问题。我试图进一步调查,MySql实际上返回0为假,1为真,为什么显示为ulong仍然击败我。你可以扩展你的影子属性的意思,我可以如何使用它来解决这个问题。 –