beginTransaction
wie es heißt, beginnt eine Transaktion,
auf der anderen Seite
session.Transaction
wird die aktuelle aktive Transaktion zurück, wenn null erstellen wird.
Die NHibernate-Sitzung verfolgt die aktuelle aktive (nicht festgeschriebene oder rückgängig gemachte) Transaktion.
Wenn Sie ISession.Transaction
aufrufen, wenn keine Transaktion wurde noch noch während der Lebenszeit der Sitzung erstellt, wird die Sitzung ein Objekt neue Transaktion zu diesem Zeitpunkt erstellen, wird aber es noch nicht beginnen. Wenn Sie ISession.BeginTransaction
aufrufen, wird die Sitzung angezeigt, wenn sie bereits ein Transaktionsobjekt ist, das zuvor erstellt wurde, , aber noch nicht abgeschlossen. Wenn dies der Fall ist, wird dieses Transaktionsobjekt zurückgegeben. Wenn nicht, erstellt es ein neues Transaktionsobjekt, beginnt es und speichert einen Verweis auf dieses neue Objekt.
Nach Abschluss der Transaktion benachrichtigt das Transaktionsobjekt die Sitzung , zu der es gehört, dass es abgeschlossen ist, worauf die Sitzung ihren Verweis auf das Transaktionsobjekt freigibt. Jeder folgende Aufruf an ISession.Transaction
oder ISession.BeginTransaction
wird dann die Erstellung eines neuen Transaktionsobjekts verursachen.
NHibernate unterstützen keine Wiederverwendung von Transaktion für mehr als ein Transaktionsobjekt (dieses Verhalten von Hibernate verschieden sein kann, die scheint Wiederverwendung von Transaktion zu unterstützen Objekte).
Siehe Dokument this Dokument.
Bookmark this: http://ayende.com/blog/3775/nh-prof-alerts-use-of-implicit-transactions-is-discouraged – Freelancer
Lese Ayende ist immer gut ... aber in diesem Fall nicht beantwortet meine Frage – SteveM