.net6实体框架中的默认可空参数

b5buobof  于 2022-12-01  发布在  .NET
关注(0)|答案(1)|浏览(474)

我正在Udemy的课程上学习.NET身份。他用的是.NET 5,但我用的是.NET 6。他创建了2个实体。
第一个
当我尝试这些,在迁移ImagePath和性别部分是nullable=false自动。

ImagePath = table.Column<string>(type: "nvarchar(max)", **nullable: false**),
Gender = table.Column<string>(type: "nvarchar(max)",** nullable: false**),

这是因为SDK的差异吗?

我是否应该使用?来使ImagePath和Gender可为空,如下所示?

public string? ImagePath { get; set; }

public string? Gender { get; set; }

什么是正确的方法来摆脱这一点?
我应该删除迁移,然后在添加到属性后重新创建数据库吗?
CS 8618-退出构造函数时,不可为空的变量必须包含非空值。请考虑将其声明为可为空。

9o685dep

9o685dep1#

在.NET 5和更早版本中,所有引用类型都是可空的,在EF中,您必须使用DbContext中的属性或Fluent API指定相应的列不为空。在.NET 6和更高版本中,引用类型默认情况下是不可空的,您可以通过将?附加到类型来指定它们是可空的。在此上下文中,.NET 6中的string?相当于.NET 5中的string。您应该进行该更改并重建数据库或应用新的迁移。

相关问题