Tengo un objeto raíz que tiene una propiedad que es una colección.Colección NHibernate IQueryable como propiedad de la raíz
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 es IQueryable para que pueda funcionar de paginación y filtrado fuera de la recogida directamente del padre.
var shelf = shelfRepository.Get(1);
var filtered = from book in shelf.Books
where book.Name == "The Great Gatsby"
select book;
quiero tener que consulta ejecutada específicamente por NHibernate y no un obtener toda cargar toda una colección y luego analizarlo 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 todo podría arruinar 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 consultado el proveedor LINQ de NHibernate y actualmente estoy tomando la decisión de tomar grandes colecciones y dividirlas en su propio repositorio para que pueda hacer llamadas explícitas para el filtrado y la paginación.
LINQ To SQL ofrece algo similar a lo que estoy diciendo.
Gracias por ser tan exhaustivo en su explicación. He pensado en las cosas que has dicho, y estoy de acuerdo con todos los puntos que hagas. Me pregunto si NHibernate 3 solo lo va a apoyar de esta forma. –