当属性可为null时,必需的属性会触发异常

本文关键字:属性 异常 null | 更新日期: 2023-09-27 18:24:16

我一直在写一些测试,结果发现,如果[Required]在一个未赋值的可为null的属性上,dbContext.SaveChanges()会引发异常:

class Object1 {
    public int Object1ID { get; set; }
    [Required(ErrorMessage="Some required data has not been set.")]
    public int? SomeRequiredData { get; set; }
}
using(CustomDbContext dbContext = new CustomDbContext()) {
    Object1 obj = new Object1();
    dbContext.Objects1.Add(obj);
    dbContext.SaveChanges();
}

上面的代码将抛出:System.Data.Entity.Validation.DbEntityValidationException。为什么正常(即不可为null)属性不发生这种情况?

当属性可为null时,必需的属性会触发异常

因为不可为null的属性不能为null,因此具有默认值。

因此,属性总是被设置的,至少是他的默认值,因此所需的约束总是得到尊重。