2011-07-16 47 views
14

请有人使用Dapper和MySQL来了解上述情况。在MySQL(5.1)的所有表中,数据类型是BIT(1)或BIT,Dapper只返回ulong(UInt64)这样的字段。我正在使用MySql.Data.MySqlClient,并且我没有EF这样的问题,这正是我想要从中转换而来的。Dapper将MySql BIT(1)数据类型映射为ulong而不是布尔型

感谢您的任何帮助。

+0

我的直觉告诉我,这是一个与MySQL驱动程序的问题...你可以用直ado.net repro问题...例如选择列并获得值...看看类型? –

+0

简单的解决方法是将阴影属性或字段添加到您的类型 –

+0

@Sam Saffron:我无法用直线ADO.NET重现它,并且我尝试了PetaPoco,它没有相同的问题。我试图进一步调查,MySql实际上返回0为假,1为真,为什么显示为ulong仍然击败我。你可以扩展你的影子属性的意思,我可以如何使用它来解决这个问题。 –

回答

3

在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

+1 Convert.toBoolean(UInt64)为我工作。 –

1

你为什么不在你的SQL查询中进行转换?

cast(myField using TINYINT(1)) as myField 

不知道这里ABOT的类型,但是这是当我的数据库类型不匹配我的对象我的方式。

相关问题