No. I blocchi vengono inseriti solo per l'entità di una transazione, che in un'applicazione Web termina al termine della richiesta. Inoltre, il tipo predefinito di modalità di isolamento delle transazioni è Lettura impegnata il che significa che i blocchi di lettura vengono rilasciati non appena termina l'istruzione select. Se stai leggendo e apportando modifiche alla stessa richiesta e transazione, puoi inserire un blocco di lettura e scrittura sulla riga a portata di mano che impedirebbe ad altre transazioni di scrivere o leggere da quella riga. Tuttavia, questo tipo di controllo della concorrenza non funziona bene in un'applicazione Web.
Ciò accadrebbe se si utilizzasse [concorrenza ottimistica]. In NHibernate, la concorrenza ottimistica funziona aggiungendo un campo versione . I comandi di salvataggio/aggiornamento vengono emessi con la versione su cui si basava l'aggiornamento. Se differisce dalla versione nella tabella del database, nessuna riga viene aggiornata e NHibernate genererà.
No, il blocco viene rilasciato al termine della richiesta.
Nel complesso, la soluzione migliore è optare per una concorrenza ottimistica con i campi della versione gestiti da NHibernate.