我将程序更新到 dotnet 8,然后将 Npgsql.EntityFrameworkCore.PostgreSQL 从 v 7.0~ 更新到 8.0。
下面是在 v7.0 中运行良好的代码示例,但在 v 8.0 中我收到错误“缺少类型信息或绑定”。谷歌搜索我发现了这个https://github.com/npgsql/npgsql/issues/5428。这是否意味着这是一个错误,我必须等待 8.01 发布才能修复它?
同时,我已将 Npgsql.EntityFrameworkCore.PostgreSQL 降级回 v7~,以便它再次运行。
var batchcommand = new NpgsqlBatchCommand($@"
INSERT INTO example_table (id, column1, column2)
VALUES (@id, @value1, @value2)
ON CONFLICT (id) DO UPDATE SET
column1 = excluded.column1,
column2 = excluded.column2
");
batchcommand.Parameters.Add(new NpgsqlParameter("@id", NpgsqlDbType.Varchar) { Value = id });
batchcommand.Parameters.Add(new NpgsqlParameter("@value1", NpgsqlDbType.Numeric) { Value = value1 });
batchcommand.Parameters.Add(new NpgsqlParameter("@value2", NpgsqlDbType.Numeric) { Value = value2 });
batch.BatchCommands.Add(batchcommand);
batch.Prepare();
var reader = batch.ExecuteReader();
reader.Close();
batch.Dispose();
将 npgsql 也升级到 8.0.1