20110505

NHibernate non ha i poteri della super mucca

Ovvero: quando si mischiano operazioni di dominio con chiamate a stored procedure nella stessa transazione non è detto che LUI (Nhibernate, intendo) le faccia nell'ordine che hai pensato TU.

In particolare LUI tende ad eseguire le CRUD di dominio il più tardi possibile (tipicamente alla commit()) e le chiamate dirette a CreateSQLQuery immediatamente (non potendo sapere quando saranno necessarie al dominio).

Il risultato è che TU perdi 10 minuti di tempo a capire come mai non funziona $niente.
Un paio di flush() ben assestate risolvono il problema.

(Così, come appunto per la prossima volta che capita)

0 commenti: