`必需`属性和 EF Core

问题描述 投票:0回答:0

一年前,C# 版本。 11、添加了修饰符

required
。因此,如果我们按如下所示标记属性:

public class Point
{
    public required int X { get; set; }
    public required int Y { get; set; }
}

如果没有 init X 和 Y,我们无法创建

Point
实例,所以如果我们尝试:

        Point fake = new Point();

我们收到编译器错误:

必需的成员“Point.X”必须在对象初始值设定项中设置或 属性构造函数。
必需的成员“Point.Y”必须设置在 对象初始值设定项或属性构造函数。

下面的代码就可以了:

Point point = new() { X = 1, Y = 2 };

通常,此功能对于解析 JSON 是必需的(描述此处

好的。但让我们看看 EF Core。如果我们创建这样的实体模型:

public class DownloadCenterFolder
{
    public int Id { get; set; }
    public string FolderName { get; set; }
}

我们收到警告:

不可为空的属性“FolderName”必须包含非空值 退出构造函数。考虑将属性声明为可为空。

但是如果我们将其标记为

required
:

public class DownloadCenterFolder
{
    public int Id { get; set; }
    public required string FolderName { get; set; }
}

警告消失

那么,当我们使用 EF Core 时,在必填字段(标记为

required
)中使用
builder.Property(p => p.ProjectName).IsRequired();
关键字是一个好方法吗?它看起来很漂亮(首先,为了避免通过 ctor 中的空字符串初始化此字段),并且我在 google 中找不到有关在 EF Core 中使用此关键字的任何内容。或者,可能还有其他方法来标记必填字段吗?

谢谢

c# entity-framework-core required ef-core-3.1 c#-11.0
© www.soinside.com 2019 - 2024. All rights reserved.