NHibernate验证器和模式导出问题

NHibernate验证器和模式导出问题,nhibernate,validation,fluent-nhibernate,nhibernate-validator,Nhibernate,Validation,Fluent Nhibernate,Nhibernate Validator,我正在学习使用NHibernate验证器和它的流畅API(饶舌) 我注意到,我不能将整数属性或可为null的int属性(int?)设置为不可为null。为什么不呢 在数据库中,整数列可以有空值。更糟糕的是,当我使用SchemaExport生成DDL时,integer列不会获取非Null性(除非我在Nhibernate映射中表示它)。您已经给出了答案。架构导出未扫描验证程序。您必须使用映射。NHibernate验证程序位于NHibernate的顶部。它用于根据NHibernate映射和自定义规则验

我正在学习使用NHibernate验证器和它的流畅API(饶舌)

我注意到,我不能将整数属性或可为null的int属性(int?)设置为不可为null。为什么不呢


在数据库中,整数列可以有空值。更糟糕的是,当我使用SchemaExport生成DDL时,integer列不会获取非Null性(除非我在Nhibernate映射中表示它)。

您已经给出了答案。架构导出未扫描验证程序。您必须使用映射。

NHibernate验证程序位于NHibernate的顶部。它用于根据NHibernate映射和自定义规则验证实体。对于配置字段属性,例如它们是否可为空,这在NHibernate映射中完成,因为它不仅影响已完成的验证,而且还影响生成的SQL语句。

如果使用
ValidatorDef
指定验证程序,则该由架构导出检测到,您将获得相应的SQL定义,例如:

public class InvoiceValidationDef : ValidationDef<Invoice>
{
   public InvoiceValidationDef()
   {
       ...
       Define(x => x.Description).NotNullable().And.MaxLength(255);
       ...
   }
}
create table Invoices (
   ...
   Description NVARCHAR2(255) not null,
   ...
)