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
public IList
{
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
IQuery qry = session.CreateFilter(order.Details, "").SetFirstResult(0).SetMaxResults(10);
IList
Questo codice sfrutta la feature di paginazione a condizione che il database sottostante lo supporti (ad esempio Ms SQL Server 2005).