Skip to main content

Creating a custom user type in Nhibernate

NHibernate has the concept of a User Type. It allows you to specify how a custom type should be mapped between your object model and the database.

An example of an out-of-the-box User Type is the YesNo type. This type allows you to map (“Y”/”N”) values in your database to boolean values in your application. To use this in your application you only need to specify a type in your mapping file:

<property name="IsActive" type="YesNo"/>

For a project I’m working on, I had a similar requirement, but because the application was in Dutch I had to use “J”/”N” instead of “Y”/”N”.

So let’s build our own User Type to achieve this. The nice thing is that I don’t have to start from scratch but can extend one of the existing User Types:

To use this type in our application, we have to change the mapping to:

<property name="IsActive" type="NHibernate.JaNeeType,Sample.NHibernate"/>