0

Я пишу некоторые тесты, и получается, что до dbContext.SaveChanges() вызывает исключение, если [Required] находится над обнуляемым имуществом, которое не было присвоено значение:Обязательного атрибут вызывает исключение, когда атрибут обнуляемого

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. Почему это не происходит для нормальных (то есть не нулевых) свойств?

+0

Он будет метать, если данные недействительны, то есть свойство равно null. Он никогда не будет выкидывать это исключение с обязательным условием свойства с типом с нулевым значением, поскольку свойство всегда будет иметь значение (в случае int это будет 0). –

ответ

0

Потому что свойство non nullable не может быть null и, следовательно, имеет значение по умолчанию.

Таким образом, свойство всегда задано, по крайней мере, по умолчанию, поэтому требуемое ограничение всегда соблюдается.

+0

Значит, вы говорите мне, что если я не присваиваю значение переменной, оно все равно имеет значение (по умолчанию)? – 2014-09-24 13:33:40

+0

переменная типа int, datetime, bool ... да, абсолютно. – tschmit007

Смежные вопросы