NHibernate Validator и Null DateTime - PullRequest
       19

NHibernate Validator и Null DateTime

2 голосов
/ 30 сентября 2010

Должно быть простое решение, я пытаюсь использовать атрибуты NHibernate Validator в моих свойствах DateTime. Если значение равно нулю (через [NotNull]), я хочу, чтобы оно не прошло проверку. Когда я отправляю нулевое значение, оно конвертируется в 1/1/0001 12:00:00 AM, и NHibernate не воспринимает это как нулевое. Думаю, я мог бы написать собственное правило проверки, которое возвращает false, если эта дата отправлена, но наверняка есть стандартный способ обойти это?

Уточнение: это пример класса,

public class ExampleClass {

  [NotNull]
  public virtual DateTime MySpecialDateProperty { get; set; }

  [NotNullOrEmpty]
  public virtual string MyString { get; set; }
}

У меня есть настройка NHibernate Validator, так что в моем контроллере я могу сделать:

newExampleClass.IsValid() и если это правда, он будет сохранен в базе данных, если нет, я вернусь newExampleClass.ValidationResults()

Когда я создаю новый экземпляр ExampleClass, MySpecialDateProperty инициализируется как 1/1/0001 ... и валидатор не принимает это как нулевое значение.

Редактировать 2: Должен ли я установить для DateTime значение nullable (DateTime?), что помешает NHibernate установить минимальное значение DateTime?

1 Ответ

7 голосов
/ 30 сентября 2010

Вам нужно использовать обнуляемый тип. DateTime инициализируется как DateTime.MinValue (01.01.0001). Попробуйте:

  [NotNull]
  public virtual DateTime? MySpecialDateProperty { get; set; }
...