Вопрос по валидатору NHibernate и экспорту схемы

Я учусь использовать валидатор NHibernate и его Fluent API (Loquacious).

Я заметил, что я не могу сделать целочисленное свойство или свойство int, допускающее значение NULL (int?), Не допускающим значения NULL. А почему бы не?

В базе данных целочисленный столбец может иметь нулевые значения. Хуже того, когда я генерирую DDL с помощью SchemaExport, целочисленный столбец не будет принимать это ненулевое значение (если я не выражу его в сопоставлениях Nhibernate).


person Ronnie Overby    schedule 17.09.2010    source источник


Ответы (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,
   ...
)
person Igor Brejc    schedule 16.03.2011

Вы уже дали ответ. Валидатор не сканируется при экспорте схемы. Вы должны использовать отображение.

person Paco    schedule 17.09.2010

NHibernate Validator находится поверх NHibernate. Он используется для проверки сущностей на соответствие сопоставлениям NHibernate и настраиваемым правилам. Для настройки свойств поля, например, допускают ли они значение NULL, это делается в сопоставлениях NHibernate, поскольку это влияет не только на выполняемые проверки, но и на сгенерированные операторы SQL.

person Matthew Kubicina    schedule 21.09.2010