Question

J'apprends à utiliser NHibernate validateur et API Courant (Loquacious).

J'ai remarqué est que je ne peux pas définir une propriété entière ou propriété nullable int (int?) Ne pas être annulable. Eh bien, pourquoi pas?

Dans une base de données, une colonne entière peut avoir des valeurs nulles. Pire encore, quand je produis à l'aide SchemaExport LDD, la colonne entière ne sera pas en ramassant que la non-nullabity (à moins que je l'exprime dans les applications NHibernate).

Était-ce utile?

La solution

Si vous spécifiez les validateurs en utilisant ValidatorDef<>, ce est détecté par le schéma de l'exportation, et vous obtiendrez les définitions SQL appropriées, par exemple:

public class InvoiceValidationDef : ValidationDef<Invoice>
{
   public InvoiceValidationDef()
   {
       ...
       Define(x => x.Description).NotNullable().And.MaxLength(255);
       ...
   }
}

Résultats dans

create table Invoices (
   ...
   Description NVARCHAR2(255) not null,
   ...
)

Autres conseils

Vous avez donné la réponse déjà. Le validateur n'est pas analysé par l'exportation de schéma. Vous devez utiliser le mappage.

NHibernate validateur se trouve au sommet de NHibernate. Il est utilisé pour valider les entités contre les correspondances NHibernate et des règles personnalisées. Pour configurer les propriétés de champ, comme si elles sont annulable, cela se fait dans les applications NHibernate car elle affecte non seulement les faits de validation, mais aussi les instructions SQL générées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top