必须的和可选的属性

如果属性值可以设置为 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. }