beginTransaction
quanto stabilisce inizia una transazione,
invece
session.Transaction
restituirà la transazione attiva corrente se null creerà uno.
La sessione di NHibernate tiene traccia della transazione attiva corrente (non impegnata o annullata).
Se si chiama ISession.Transaction
quando nessuna transazione è stato ancora ancora creato durante la durata della sessione, la sessione sarà creare un nuovo oggetto di transazione a quel punto nel tempo, ma non inizierà ancora. Quando si chiama ISession.BeginTransaction
, la sessione vedrà se è già un oggetto transazione che è stato creato in precedenza, ma non ancora completato. In tal caso, restituirà questo oggetto transazione. In caso contrario, creerà un nuovo oggetto di transazione, inizierà e memorizzerà un riferimento a questo nuovo oggetto.
Al completamento della transazione, l'oggetto transazione notifica la sessione a cui appartiene che ha completato, in cui la sessione sarà rilasciare il suo riferimento all'oggetto transazione. Qualsiasi successiva chiamata a ISession.Transaction
o ISession.BeginTransaction
causerà quindi la creazione di di un nuovo oggetto di transazione.
NHibernate non supporta il riutilizzo di oggetti di transazione per più di una transazione (questo comportamento può essere diverso da Hibernate, che sembra sostenere il riutilizzo delle transazioni di oggetti).
Consultare il documento this.
Aggiungi segnalibro: http://ayende.com/blog/3775/nh-prof-alerts-use-of-implicit-transactions-is-discouraged – Freelancer
lettura Ayende è sempre buono, ma ... in questo caso non risponde alla mia domanda – SteveM