NHibernate mappa per default i tipi enumerativi verso una colonna di tipo intero, ma è possibile configurarlo in modo da mappare una proprietà di tipo enumerato su una colonna di tipo stringa. Per farlo occorre definire un tipo personalizzato che sia in grado di operare tale conversione. Nel framework NHibernate è disponibile il tipo "EnumStringType", che è utilizzabile come classe base per velocizzare tale operazione.
| //definizione dell'enum enum Sesso { Maschio, Femmina } //definizione del tipo per la mappatura class SessoType: NHibernate.Type.EnumStringType { //nel costruttore indico il tipo dell'enumerato e la lunghezza della stringa public SessoType() : base(typeof(Sesso), 7) { ;} } //mappatura del campo nel file .hbm.xml <property name="Sesso" column="SESSO" type="MyNamespace.SessoType,MyAssembly"/> |
Nell'esempio appena mostrato si sta eseguendo una mappatura semplice nella quale il valore del campo in tabella sarà uguale al nome del valore dell'enum espresso in formato stringa. Seppur apparentemente poco applicabile in casi reali, intervenendo sulla ridefinizione (override) di alcuni metodi è anche possibile operare mappature più interssanti, come ad esempio mappare il valore Maschio con la stringa "M" e Femmina con "F".