Хорошо, я не производитель, но как это влияет на ваш код, но fetchmany перенесет весь набор результатов в память и затем возьмет указанное подмножество.
используйте joinqueryover или joinalias для достижения того же самого.
var c = session.Query<Table1>().Take(5).FetchMany(x => x.Table2).ToList();
это становится
Table2 table2Alias=null;
var c = session.QueryOver<Table1>().JoinAlias(x => x.Table2,()=>table2Alias).Take(5).ToList();
дайте мне знать, если это сработает для вас .. или вы можете вместо этого написать запрос HQL