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 connessione e grazie al ConnectionProvider si può intervenire trasparentemente iniettando la propria connessione senza che il codice di produzione si accorga della differenza.
Alk.