2

那里必须有一个简单的解决方案,我正在尝试在我的 DateTime 属性上使用 NHibernate Validator 属性。如果值为 null (通过[NotNull]),我希望它验证失败。当我提交一个空值时,它会被转换为1/1/0001 12:00:00 AMNHibernate 并不会将其选为空值。我想我可以编写一个自定义验证规则,如果提交该日期,则返回 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 ...并且验证器不会将其作为空值。

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

4

1 回答 1

7

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

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