Colección NHibernate IQueryable como propiedad de root

Tengo un objeto raíz que tiene una propiedad que es una colección.

Por ejemplo:

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;}
}

Lo que quiero lograr es devolver una colección que sea IQueryable para que pueda ejecutar la paginación y el filtrado de la colección directamente desde el padre.

var shelf = shelfRepository.Get(1);

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

Quiero que esa consulta sea ejecutada específicamente por NHibernate y no que se cargue toda una colección y luego se analice en la memoria (que es lo que sucede actualmente cuando uso ICollection).

El razonamiento detrás de esto es que mi colección podría ser enorme, decenas de miles de registros, y una consulta de obtención de todos podría afectar mi base de datos.

Me gustaría hacer esto implícitamente para que cuando NHibernate vea un IQueryable en mi clase sepa qué hacer.

He mirado al proveedor LINQ de NHibernate y actualmente estoy tomando la decisión de tomar grandes colecciones y dividirlas en su propio repositorio para poder hacer llamadas explícitas para el filtrado y la paginación.

LINQ To SQL ofrece algo similar a lo que estoy hablando.

Respuestas a la pregunta(3)

Su respuesta a la pregunta