Se dovessi creare un sito con un linguaggio mutevole come C # e utilizzare NHibernate, normalmente mi avvicinerei alle sessioni con l'idea di crearle come create solo quando necessario e disponili al momento della richiesta. Ciò ha aiutato a mantenere una sessione per più transazioni da parte di un utente, ma impedisce che rimanga aperta troppo a lungo dove lo stato potrebbe essere danneggiato.
In un sistema immutabile, come F #, penserei che non dovrei farlo perché suppone che una singola sessione possa essere aggiornata costantemente da un numero qualsiasi di inserimenti / aggiornamenti / cancella / ect ... Non sono contrario la soluzione di "utilizzo" dal momento che penserei che il pooling di connessione contribuirà a ridurre il costo della connessione ogni volta, ma non so se tutti i sistemi di database fanno il pooling delle connessioni. Sembra proprio che ci dovrebbe essere un modo migliore che non comprometta l'obiettivo di immutabilità.
Dovrei semplicemente fare un semplice "utilizzo" di un blocco per transazione o esiste un modello migliore per questo?