NHibernate Validator и вопрос экспорта схемы
Я учусь использовать валидатор NHibernate и его свободный API (Loquacious).
Я заметил, что я не могу установить целочисленное свойство или свойство nullable int (int?), Чтобы оно не было nullable. А почему бы не?
В базе данных целочисленный столбец может иметь нулевые значения. Еще хуже, когда я генерирую DDL, используя SchemaExport, целочисленный столбец не будет захватывать эту ненулевую (если я не выражу это в отображениях Nhibernate).
3 ответа
Если вы укажете валидаторы, используя 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,
...
)
Вы уже дали ответ. Валидатор не сканируется при экспорте схемы. Вы должны использовать отображение.
NHibernate Validator находится поверх NHibernate. Он используется для проверки сущностей на соответствие отображений NHibernate и пользовательских правил. Для настройки свойств полей, таких как обнуляемость, это делается в отображениях NHibernate, поскольку это влияет не только на выполненные проверки, но и на сгенерированные операторы SQL.