【发布时间】:2022-01-22 15:33:54
【问题描述】:
我正在尝试通过 Copy-Statement 将一些数据插入 Postgres 数据库。
这是代码的一部分:
await using var writer =
await connection.BeginBinaryImportAsync(
"COPY \"SomeTable\" (\"NormalLong\", \"NullableLong\") FROM STDIN (FORMAT BINARY)");
foreach (var t in batch)
{
await writer.StartRowAsync();
await writer.WriteAsync(t.NormalLong, NpgsqlDbType.BigInt);
await writer.WriteAsync(t.NullableLong, NpgsqlDbType.Bigint);
}
public class SampleClass {
public long NormalLong { get; set; }
public long? NullableLong { get; set; }
}
在执行时,t 上的两个值都设置为某个数值,但类型为 long? 的值总是会导致此错误:
System.NullReferenceException: Object reference not set to an instance of an object.
有没有办法在不改变类型的情况下处理这个问题,因为它有时需要为空?
【问题讨论】:
-
试试这个:
await writer.WriteAsync((object) t.NullableLong ?? DBNull.Value, NpgsqlDbType.Bigint);
标签: c# postgresql npgsql