Коллекция NHibernate IQueryable как свойство root

У меня есть корневой объект, который имеет свойство, которое является коллекцией.

Например:

I have a Shelf object that has Books.

// Now
public class Shelf 
{
    public ICollection<Book> Books {get; set;}
}

// Want 
public class Shelf 
{
   public IQueryable<Book> Books {get;set;}
}

То, что я хочу сделать, это вернуть коллекцию, которая является IQueryable, чтобы я мог запустить подкачку и фильтрацию коллекции непосредственно из родительского.

var shelf = shelfRepository.Get(1);

var filtered = from book in shelf.Books
               where book.Name == "The Great Gatsby"
               select book;

Я хочу, чтобы этот запрос выполнялся специально NHibernate, а не get all, чтобы загрузить всю коллекцию и затем проанализировать ее в памяти (что в настоящее время происходит, когда я использую ICollection).

Причиной этого является то, что моя коллекция может быть огромной, десятки тысяч записей, и запрос get all может разрушить мою базу данных.

Я хотел бы сделать это неявно, чтобы, когда NHibernate увидел IQueryable в моем классе, он знал, что делать.

Я посмотрел на LINQ-провайдера NHibernate, и в настоящее время я принимаю решение взять большие коллекции и разделить их на их собственный репозиторий, чтобы я мог делать явные вызовы для фильтрации и подкачки страниц.

LINQ To SQL предлагает нечто похожее на то, о чем я говорю.