|Just my 2 cents...
I find testing NHibernate and Entity Framework a PITA, because if I want a test that gives me some actual value, it needs to touch the database. After all one is a concrete IQueryable and the other is most probably an IEnumerable (or at most, an implementation of IQueryable based on IEnumerables).
In my experience problems in that kind of code show up during the conversion from linq to SQL, so unless you have the whole thing set up you cannot be really sure it's going to work.
I am aware that this makes the unit test become an "integration test", but since a mock based unit test would have to be complemented by an identical test with the real db to test the ast's, I don't see any value in the mocked ones UNLESS the integration tests are really very very slow. Only then it might be worth to mock the DB so you can rely on actual unit tests during development.
If anyone has a better idea then by all means PLEASE PLEASE PLEASE share it!