1 messaggio dal 09 novembre 2004
Ciao Marco,

Proprio un bell'articolo! Peccato non averlo visto qualche mese fa, quando ho cominciato con NHibernate...
Ci son caduto su cercando informazione su come gestire la Session e la tua soluzione funziona a meraviglia. A dire la verità, io avevo già pensato a qualcosa di simile, mettendo come static addirittura la Session (e non la SessionFactory) ma dopo qualche Session.Load mi imbattevo in un strano errore ("Unexpected row count: 2; expected: 1"). Che tu sappia, c'è qualche problema a tenere la Session come static o si trattava di un problema specifico alla mia applicazione?
Grazie ancora, anche a tutti i ragazzi di aspitalia!

Francesco.
Ciao Francesco,

la Session non è thread safe, quindi non può essere static in uno scenario multi-threaded come quello di una webapp, per il quale solitamente uso il pattern Session-per-Request, aprendo la sessione ad inizio richiesta e chiudendola al dispose della pagina. Considera che aprire e chiudere una session è un'operazione velocissima e leggera, a differenza della Factory, che giustamente crei come static.

E' in ogni caso un approccio che sconsiglio vivamente anche in un'applicazione windows forms: una session unica per applicazione rischia di diventare ben presto onerosa per il sistema (mantiene reference a tutti gli oggetti caricati in una qualsiasi delle form dell'applicativo) e vincola tutte le form a lavorare sulle medesime istanze degli oggetti, impedendo l'isolamento delle stesse a livello dei dati su cui operano.

A presto ;-)
Marco

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.