Что возможно, так это вернуть IEnumerable следующим образом:
public IEnumerable<T> Get()
{
return Session.CreateCriteria(typeof(T)).Future<T>();
}
Таким образом, вы можете выполнять отложенное выполнение так же, как в Linq to SQL.
Для получения дополнительной информации о методе Future см .:
http://ayende.com/Blog/archive/2009/04/27/nhibernate-futures.aspx
Вы также можете имитировать IQueryable, возвращая интерфейс ICriteria вместо IList:
public ICriteria<T> Get()
{
return Session.CreateCriteria(typeof(T));
}
Таким образом, вы можете начать строить запрос вне вашего метода и, наконец, выполнить его, когда захотите.