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 –