• 必须的和可选的属性
    • 惯例
    • 数据注解
    • 流式 API

    必须的和可选的属性

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

    惯例

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

    注意

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

    数据注解

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

    1. public class Blog
    2. {
    3. public int BlogId { get; set; }
    4. [Required]
    5. public string Url { get; set; }
    6. }

    流式 API

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

    1. class MyContext : DbContext
    2. {
    3. public DbSet<Blog> Blogs { get; set; }
    4. protected override void OnModelCreating(ModelBuilder modelBuilder)
    5. {
    6. modelBuilder.Entity<Blog>()
    7. .Property(b => b.Url)
    8. .IsRequired();
    9. }
    10. }
    11. public class Blog
    12. {
    13. public int BlogId { get; set; }
    14. public string Url { get; set; }
    15. }