Ricerche con NHibernate

In questi giorni lavorando con NH mentre stavo realizzando un metodo di caricamento tramite ICriteria, il fido intellisense di VS2008 mi ha mostrato la classe Example.
Questa permette di filtrare i dati usando un oggetto "semipopolato" per costruire la clausola where.
Ad esempio, supponete di voler caricare tutti gli ordini in stato "accettato" del 09/04/2007. Usando l'oggetto Example potete scrivere:

Ordine ordine = new Ordine();
ordine.Stato = StatiOrdine.Accettato;
ordine.Data = new DateTime(2007, 04, 09);
ICriteria criteria = session.CreateCriteria(typeof(Ordine));
criteria.Add(Example.Create(ordine));
IList result = criteria.List();

In pratica NH cerca tra le proprietà dell'oggetto ordine quelle che hanno un valore diverso dal default (null, zero, DateTime.MinValue, ecc...) e le usa per costruire il filtro.

L'ho subito utilizzato per implementare una funzionalità di ricerca all'interno di una mia applicazione.

Print | posted on domenica 9 settembre 2007 00:07