我正在将一个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之外运行,无论是在安装模式还是发布模式。
有人知道是什么导致了这种奇怪的行为吗?
1条答案
按热度按时间jgzswidk1#
事实证明,这两个项目之间存在差异。webapi环境使用了nullable选项,而模型(在另一个项目中)没有。一旦我在模型项目上启用了nullable并实现了它,错误就消失了。