ASP.NET postgresql NpgsqlDbType.Bit 不支持 BitArray?



遇到一个似乎与文档矛盾的类型错误。。。

在我的本地计算机上创建了一个postgresql表,其中有2列(SystemID[as-uuid],TrackingID[as-Bit[],大小为256](。

在C#ASP.NET中,我得到了错误:

42804:列"TrackingID"的类型为bit[],但表达式的类型为位

我看不到"NpgsqlDbType.BitArray"的选项,但文档说"NpgqlDbType.Bit"应该接受C#BitArray对象类型:https://www.npgsql.org/doc/types/basic.html

下面是我的C#代码示例:

using (var connection = new NpgsqlConnection(DBUtils.connectionString))
{
try
{
connection.Open();
using (var cmd = connection.CreateCommand())
{
cmd.CommandText = "INSERT INTO hosts VALUES(@SystemID, @TrackingIDs)";
cmd.Parameters.AddWithValue("@SystemID", NpgsqlDbType.Uuid, systemID);
cmd.Parameters.AddWithValue("@TrackingIDs", NpgsqlDbType.Bit, new BitArray(256));
return cmd.ExecuteNonQuery() != 0 ? "Success" : "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
finally
{
connection.Close();
}
}

pgAdmin4:3.6
Npgsql版本:4.0.4
PostgreSQL版本:11.1
操作系统:Win10 x64
ASP.NET:.NET Core 2.2

EDIT:缺少"NpgsqlDbType.Bit|NpgsqlDbType.Array"。但是我现在只得到:

22026:位字符串长度1与类型位(256(不匹配

所以PostgreSQL中的bit可以是任何大小,也可以被认为是复数。例如,我是从字节中的一点来思考的。因此,解决方案是只创建一个长度为256的"位"类型列。然后我可以设置一个BitArray(256(

最新更新