Alkampfer's Place

Il blog di Gian Maria Ricci
posts - 495, comments - 999, trackbacks - 70

My Links

News

Gian Maria Ricci
Mvp Logo
CCSVI in Multiple Sclerosis

English Blog

Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

I miei siti

Siti utili

NHibernate

NHibernate, criteria query e relazioni

Supponiamo di avere le classi Customers e Orders del database northwind, abbiamo implementato la relazione many-to-one bidirezionale nel nostro domain model, così da avere una collection orders nella classe Customer, ed una proprietà Customer nell'oggetto order. Ora se si vuole prendere tutti gli ordini di "ALFKI" in un determinato range di tempo si può scrivere questa criteria query ICriteria criteria = session.CreateCriteria(typeof (Order)); criteria.Add(Expression.Between("OrderDate", new DateTime(1997, 10, 1), new DateTime(1998, 1, 1))); Customer cust = session.Load<Customer>("ALFKI"); criteria.Add(Expression.Eq("Customer", cust)); IList<Order> result = criteria.List<Order>(); Notare come il riferimento all'oggetto Customer sia recuperato tramite il Session.Load() cosi da creare un proxy e non andare a disturbare il database. Ma cosa succede se la relazione non è implementata in maniera bidirezionale, ma unidirezionale? Ad esempio se l'oggetto...

posted @ martedì 4 dicembre 2007 20.22 | Feedback (0) | Filed Under [ NHibernate ]

Provider di connessione per nhibernate - Precisazioni

Nel precedente post ho spiegato come realizzare un provider custom per le connessioni in nhibernate al fine di potere iniettare una connessione in una sessione. Per completezza è il caso di citare che il metodo SessionFactory.OpenSession() ha una versione in overload che accetta un oggetto IDbConnection come parametro. Il risultato è praticamente analogo e sicuramente si scrive meno codice rispetto all'esempio precedente. Il contro di questa tecnica è che spesso si debbono eseguire dei test su classi che internamente creano una sessione (o prendono quella della conversazione corrente). Queste classi chiaramente invocano il metodo SessionFactory.OpenSession() senza preoccuparsi della gestione della...

posted @ venerdì 3 agosto 2007 22.56 | Feedback (0) | Filed Under [ NHibernate ]

Provider di connessioni per nhibernate

Debbo dire che più conosco nhibernate più lo apprezzo veramente tanto. Stasera mi sono chiesto, posso iniettare una mia connessione in una sessione? Lo scopo di una simile operazione è vario, potrei ad esempio iniettare una connessione durante un test per potere poi fare query dirette al database e verificare che i dati siano scritti bene, oppure potrei volere eseguire codice SQL diretto assieme a nhibernate in una unica transazione etc etc. LA soluzione a questo problema è veramente banale :D. Nhibernate definisce un interfaccia chiamata IConnectionProvider tramite la quale la sessionFactory recupera la connessione da dare in pasto alla sessione,...

posted @ venerdì 3 agosto 2007 21.56 | Feedback (1) | Filed Under [ NHibernate ]

Powered by: