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.

Другие вопросы по тегам