NHibernate Validator和Null DateTime

时间:2010-09-30 14:56:01

标签: nhibernate nhibernate-validator

必须有一个简单的解决方案,我正在尝试在我的DateTime属性上使用NHibernate Validator属性。如果值为null(通过[NotNull]),我希望它验证失败。当我提交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()

当我创建ExampleClass的新实例时,MySpecialDateProperty初始化为1/1/0001 ...并且验证程序不会将其选为空值。

编辑2:我应该将DateTime设置为可空(DateTime?),这会阻止NHibernate将值设置为最小DateTime吗?

1 个答案:

答案 0 :(得分:7)

您需要使用可空类型。 DateTime初始化为DateTime.MinValue(1/1/0001)。尝试:

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