提问人:Jim Marquardt 提问时间:10/11/2023 更新时间:10/30/2023 访问量:19
EF Core/PostgreSQL 列在 Docker 中为 null 异常
EF Core/PostgreSQL Column is null exception in Docker
问:
我正在将 WebApi 项目 (efcore 7) 移动到 Docker 容器。新的实现是访问其自己的容器中的 PostgreSQL 实例。一切运行良好,但我有一个无法解决的异常。
我声明了一个模型,如下所示:
public class Member
{
public Guid MemberId { get; set; }
public string UserName { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string Code { get; set; }
public int Status { get; set; }
}
当字段 Code 包含 时,它会导致 EF 和 PostgreSQL 出现问题。在 Code 中检索具有 null 值的成员记录时,它将返回错误消息:null
System.InvalidCastException: Column 'Code' is null.
at Npgsql.ThrowHelper.ThrowInvalidCastException_NoValue(FieldDescription field)
at Npgsql.NpgsqlDataReader.GetFieldValue[T](Int32 ordinal)
at Npgsql.NpgsqlDataReader.GetString(Int32 ordinal)
...
创建表的迁移将 Code 属性声明为: ,因此它应该能够包含 null 值。table.Column<string>(type: "text", nullable: true)
更令人困惑的是,仅当 WebApi 在 Docker 容器中运行时,才会发生此异常。代码在 Docker 外部以“调试”或“发布”模式正常运行。
有没有人知道是什么导致了这种奇怪的行为?
答:
0赞
Jim Marquardt
10/30/2023
#1
事实证明,这两个项目之间存在差异。webapi 环境使用的是 nullable 选项,而模型(在另一个项目中)则没有。一旦我在模型项目上启用了 nullable 并实现了它,错误就消失了。
评论