2

そこには簡単な解決策があるはずです。私はDateTimeプロパティでNHibernateValidator属性を使用しようとしています。値が(を介して[NotNull])nullの場合、検証に失敗するようにします。null値を送信すると、変換され1/1/0001 12:00:00 AM、NHibernateはそれをnullとして取得しません。その日付が送信された場合にfalseを返すカスタム検証ルールを作成できると思いますが、これを回避する標準的な方法は確かにありますか?

明確化:これはサンプルクラスであり、

public class ExampleClass {

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

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

NHibernate Validatorをセットアップしているので、コントローラーで次のことができます。

newExampleClass.IsValid()それが本当ならそれはデータベースに残ります、そうでなければ私は戻りますnewExampleClass.ValidationResults()

の新しいインスタンスを作成するとExampleClassMySpecialDateProperty初期化は1/1/0001 ...になり、バリデーターはそれをnull値として取得しません。

編集2:NHibernateが値を最小のDateTimeに設定できないようDateTimeにするnullable( )に設定する必要がありますか?DateTime?

4

1 に答える 1

7

null許容型を使用する必要があります。DateTimeはDateTime.MinValue(1/1/0001)に初期化されます。試す:

  [NotNull]
  public virtual DateTime? MySpecialDateProperty { get; set; }
于 2010-09-30T16:40:32.787 に答える