1
如果我有一個TINYINT(1)
列的表,並用DataReader選擇此列,MySQL創建一個布爾列。強制MySQL連接器.NET返回一個布爾值
var query = "SELECT column FROM table";
using (var reader = ExecuteReader(query))
{
var schemaTable = reader.GetSchemaTable();
var row = schemaTable.DefaultView[0];
Assert.AreEqual(typeof(bool), row["DataType"]);
}
但是,如果我有一個查詢不起作用。
var query = "SELECT false";
using (var reader = ExecuteReader(query))
{
var schemaTable = reader.GetSchemaTable();
var row = schemaTable.DefaultView[0];
Assert.AreEqual(typeof(bool), row["DataType"]);
}
這個測試失敗,因爲數據類型是System.Int64
是否可以強制查詢返回TINYINT(1)值?在大局,我讓實體框架生成我的模型,我有一些視圖與創建爲System.Int64的布爾列,我想這將解決這個問題。
我一樣,MySQL只允許'CAST 0作爲符號/ UNSIGNED'這將導致Int64 - https://dev.mysql.com/doc/refman/5.0/en/cast-functions.html –