I checked out the latest version of Fluent NHibernate today and noticed the AutoPersistenceModel. I looked at the unit-tests to see what it’s supposed to do and I loved what I saw…
Let’s say you have a 2 simple classes like this:
Now, in the global.asax’s init (assuming a web application), we can configure NHibernate using Fluent NHibernate like this:
It uses convention over configuration in lots of places, eg the Id property is always used as identity-column if a property with that name exists.
But you could also easily add your own conventions. If you want to have the Id colums to be ArtistId and AlbumId (and any other className + Id), you’d do:
Want to restrict the namespace as well? No problem!
Fantastic! Now, to see what mapping file this code automagically creates for our Artist class, we can run the following code:
which returns an XmlDocument. In this case, the InnerXml of that document looks like this:
Again: fantastic! See how it even generates the one-to-many relation with the correct end-class, because we defined a property IList<Album>!
Running the same code for the Album class gives:
If you want to use Fluent NHibernate the ‘old’ way, you can still add ClassMap<Artist> to your assembly. Hence, you can even mix it with the AutoPersistenceModel! If you have a classmap file, it’ll use that for your class, if it isn’t there it’ll automatically create a mapping for you!
I’m sold! This makes using NHibernate a breeze. You can get up and running with your NHibernate project so much faster now.