A: 

Yes there is. I found this when watching session #3 of the Summer of NHibernate series by Stephen Bohlen.

His company, Microdesk, has developed a utility that will allow you to save the state of a database on test fixture construction, set the state of the database at the start of every test, and recover the original state of the database on test fixture deconstruction.

Download the utility here: Microdesk.Utility.UnitTest

For a tutorial on how to use it, watch the Summer of NHibernate session #3 video.

Ronnie Overby
A: 

Fluent NHibernate has a feature which gives you everything on your wish-list, except the auto-population part:

Link: http://wiki.fluentnhibernate.org/Persistence_specification_testing

However, given C# with code contracts, it wouldn't be to hard to auto-magically create valid objects yourself using reflection.

Martin R-L
+2  A: 

Take a look at NBuilder, it lets you build test objects with random data, or incrementing values, and anything you can probably think of. All though a nice fluent interface.

Michael Baldry