NHibernate 1.2 released! upgrade experience report – level 300

First, kudos to the NHibernate team for getting the 1.2 release finalized.  Get it here.

The first thing you’ll notice when upgrading from 1.0.3 is that class mappings are now lazy by default.  If you want to just upgrade your app, you’ll need to go through  your mappings and mark each class mapping as lazy=”false”.  Then, everything should work. 

Another semantic change that I noticed in my codebase is that before a new NHibernate ISession is used, the Transaction property was null in v1.0.3.  With v1.2, this object is not null (but isn’t active, either).  I found this because I had a check for null in my NHibernate management code.  No biggie, but something I noticed.

v1.2 brings a Dialect for SQL 2005, so that’s cool.  I had been using the SQL 2000 Dialect for 2005, and it worked just fine because SQL 2005 is pretty much backward compatible.

Another biggie is the addition of some ICriterion implementations for subqueries.  We’re all used to using Expression.Eq() for forming the WHERE clause, but now we also have Subqueries.* for creating a WHERE clause with a subquery.  This is useful for checking to make sure a bag or list has at least one object while using an instance of ICriteria.

The upgrade was pretty painless, and I love it.