NHibernate Validator和Schema Export问题

时间:2010-09-17 19:58:55

标签: nhibernate validation fluent-nhibernate nhibernate-validator

我正在学习使用NHibernate验证器,它是Fluent API(Loquacious)。

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

在数据库中,整数列可以包含空值。更糟糕的是,当我使用SchemaExport生成DDL时,整数列不会接受非可空性(除非我在Nhibernate映射中表达它)。

3 个答案:

答案 0 :(得分:0)

你已经给出了答案。架构导出不扫描验证器。你必须使用映射。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您使用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,
   ...
)