NHibernate ISession Flush: Onde e quando usá-lo e por quê?
Uma das coisas que me deixa completamente confuso é o uso desession.Flush
,em conjunção comsession.Commit
esession.Close
.
As vezessession.Close
funciona, por exemplo, confirma todas as alterações necessárias. Sei que preciso usar o commit quando tenho uma transação ou uma unidade de trabalho com várias criações / atualizações / exclusões, para que eu possa optar por reverter se ocorrer um erro.
Mas às vezes fico realmente frustrado com a lógica por trássession.Flush
. Eu vi exemplos em que você tem umsession.SaveOrUpdate()
seguido de um flush, mas quando removo o flush, ele funciona bem de qualquer maneira. Às vezes, encontro erros na instrução Flush dizendo que a sessão atingiu o tempo limite e a remoção garantiu que não encontrei esse erro.
Alguém tem uma boa orientação sobre onde ou quando usar um Flush? Verifiquei a documentação do NHibernate para isso, mas ainda não consigo encontrar uma resposta direta.