EF Core/PostgreSQL列在Docker中为空异常

jfgube3f  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(149)

我正在将一个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字段包含null时,它会导致EF和PostgreSQL出现问题。当在Code中检索具有null值的Member记录时,它会返回错误消息:

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属性声明为:table.Column<string>(type: "text", nullable: true),因此它 * 应该 * 能够包含空值。
更令人困惑的是,只有当WebApi在Docker容器中运行时才会发生此异常。代码通常在Docker之外运行,无论是在安装模式还是发布模式。
有人知道是什么导致了这种奇怪的行为吗?

jgzswidk

jgzswidk1#

事实证明,这两个项目之间存在差异。webapi环境使用了nullable选项,而模型(在另一个项目中)没有。一旦我在模型项目上启用了nullable并实现了它,错误就消失了。

相关问题