+1  A: 

The best piece of advice anyone will give you is don't use Linq2NH unless you are writing a very basic, home-made application.

Its very immature, its slow, only supports basic queries, doesn't support caching, eager loading, grouping.... I spent 6 months using it before I abandoned it and made the effort to learn HQL/Criteria.

reach4thelasers
I agree, it's not there yet
Trent
+1  A: 

@reach4thelasers, re: cachable and fetch mode, I thought you could do things like the following, no?

var uthings = session.Linq<UserThings>();
uthings.QueryOptions.SetCachable(true);
uthings.QueryOptions.RegisterCustomAction(c => c.SetFetchMode("/UserThing/User", FetchMode.Eager))
return uthings.Where(ut => ut.User == user);

Instead of the not-so-beautiful RegisterCustomAction+SetFetchMode you can also do uthings.Expand("User") but that only works with single property, can't combine two Expands until NHLQ-35 is fixed.

zvolkov
I think I would rather use the Criteria Query for now. Sounds like I need to wait. Good catch on the duplicate.
Trent
Last time I used it, Linq queries didn't have a SetCachable(bool) method, but it may have come along a bit in the last 6 months.
reach4thelasers