他のすべてのデータ型では正常に機能しますが、「ビット」列では機能しません。
これは、一括書き込みを行うための私の 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;
typeof(bool)
例外は WriteToServer 行でスローされ、指定されているかどうかに応じて、次のいずれかになります。
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
おり、NULL は許可されていません。
ブール値を機能させる方法はありますか?
SqlBoolean
編集:タイプとしても見つけて試してみましたThe given value of type SqlBoolean from the data source cannot be converted to type int of the specified target column.
が、それは機能しませんでした.intが機能することを示唆していますが、そうではないようです.
編集: 問題は、基になるデータベースが typeint
であることが紫色のクレヨンのように明らかな場合にtype であると考えることにあると思われbit
ます。したがって、基になる type に変換されないというエラー メッセージが表示されますint
。