我正在学习使用NHibernate验证器,它是Fluent API(Loquacious)。
我注意到我不能将整数属性或nullable int属性(int?)设置为不可为空。那么,为什么不呢?
在数据库中,整数列可以包含空值。更糟糕的是,当我使用SchemaExport生成DDL时,整数列不会接受非可空性(除非我在Nhibernate映射中表达它)。
答案 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,
...
)