1.4.5 必须的和可选的属性

优质
小牛编辑
129浏览
2023-12-01

如果属性值可以设置为 null,则其被认为是可选的(可空的)。相反,如果属性值设置为 null 是非法的,那么它就被认为是必须的属性。

惯例

按照惯例,值可以是 null 的运行时类型(stringint?byte[] 等等)属性将被配置为可选。值不能为 null 的运行时类型(intdecimalbool 等等)属性则将被配置为必须。

注意

值不能为 null 的运行时类型属性是无法被配置为可选的。这样的属性将总是被 Entity Framework 认为是必须的。

数据注解

可以使用数据注解将属性标注为必须。

public class Blog
{
    public int BlogId { get; set; }
    [Required]
    public string Url { get; set; }
}

流式 API

可以使用流式 API 将属性标注为必须。

class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>()
            .Property(b => b.Url)
            .IsRequired();
    }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
}