Não. Os bloqueios são colocados apenas para a extensão de uma transação, que em um aplicativo da Web termina quando a solicitação termina. Além disso, o tipo padrão de modo de isolamento de transação é Leitura confirmada o que significa que os bloqueios de leitura são liberados assim que a instrução select termina. Se você estiver lendo e fazendo edições na mesma solicitação e transação, poderá colocar um bloqueio de leitura e gravação na linha em questão, o que impediria que outras transações gravassem ou lessem nessa linha. No entanto, esse tipo de controle de simultaneidade não funciona bem em um aplicativo da Web.
Isso aconteceria se a [simultaneidade otimista] estivesse sendo usada. No NHibernate, a simultaneidade otimista funciona adicionando um campo de versão . Os comandos salvar/atualizar são emitidos com a versão na qual a atualização foi baseada. Se isso for diferente da versão na tabela do banco de dados, nenhuma linha será atualizada e o NHibernate será lançado.
Não, o bloqueio é liberado ao final da solicitação.
No geral, sua melhor aposta é optar pela simultaneidade otimista com os campos de versão gerenciados pelo NHibernate.