2011-07-16 48 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的類型,但是這是當我的數據庫類型不匹配我的對象我的方式。

相關問題