它适用于所有其他数据类型,但我无法让它与“位”列一起使用。
这是我进行批量写入的 SQL:
using (var bulk = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity & SqlBulkCopyOptions.KeepNulls))
{
bulk.BatchSize = 2000;
bulk.DestinationTableName = targetTable;
bulk.WriteToServer(dataTable);
}
这是我的数据表:
DataTable dt = new DataTable();
dt.Clear();
dt.Columns.Add("MyBool", typeof(bool)); // Tried with and without typeof(bool)
return dt;
这就是我在将行添加到数据表之前构建行的方式。
personAssociationRow["MyBool"] = true;
在 WriteToServer 行上引发异常,并且取决于是否typeof(bool)
指定:
Cannot insert the value NULL into column 'MyBool', table
但智能感知/调试器将值显示为true
或者
The given value of type String from the data source cannot be converted to type int of the specified target column.
这就是智能感知/调试器中的值变成"True"
字符串的时候。
在数据库中,该列被定义为bit
并且不允许为空值。
有什么想法可以让我的布尔值起作用吗?
编辑:刚刚发现并尝试SqlBoolean
作为一种类型,但没有奏效,它说The given value of type SqlBoolean from the data source cannot be converted to type int of the specified target column.
这表明 int 会起作用,但似乎没有。
编辑:我怀疑问题在于它认为底层数据库是类型int
,当它清楚地显示类型是紫色蜡笔时bit
,因此关于它的错误消息没有转换为底层类型int
。