Logo UGIdotNET

Paginare una collection in NHIbernate

Con NHibernate è possibile gestire una delle strutture classiche più usate nel proprio domain model che prende il nome di Parent-Child, cioè un oggetto padre che ha una collection di oggetti figlio. Ecco un esempio:

public class Order

    private IList details;

    public IList Details
    {
      get { ... }
      set { ... }
    } 
}

La collection può essere caricata in modo tardivo specificando l'attributo lazy=true. Ma questo caricamento (sia in lazy che anticipato) impone comunque una completa inizializzazione della collezione. Se il numero di elementi della collection dovesse essere troppo alto, potrebbe essere necessaria una paginazione. Una inizializzazione parziale della collection potrebbe essere fatta con il codice seguente: 

Order order = session.Get(codice);

IQuery qry = session.CreateFilter(order.Details, "").SetFirstResult(0).SetMaxResults(10);
IList list = qry.List();

Questo codice sfrutta la feature di paginazione a condizione che il database sottostante lo supporti (ad esempio Ms SQL Server 2005).    

Autore: Giancarlo Sudano
Data: 04 luglio 2007
Ultimo aggiornamento: 04 luglio 2007
Categorie:  Data Access

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185