NHibernate und Transaktionen - "Transaktion nicht verbunden oder unterbrochen wurde"

Folgenden wird ein repräsentativer Ausschnitt aus meinem code, in dem eine unerwartete, zumindest für meinen Teil, Ausnahme wird geworfen auf die transaction.Rollback() - Anweisung.

Ausnahme ist der Typ NHibernate.TransactionException und die Nachricht ist "Transaktion nicht verbunden oder unterbrochen wurde." Und der StackTrace sieht wie folgt aus: NHibernate.Transaction.AdoTransaction.CheckNotZombied() at NHibernate.Transaction.AdoTransaction.Rollback().

IEmployeeService employeeService = new EmployeeService(session);
var people = ReadFromFile('c:\temp.csv');

for (var person in people)
{
    ITransaction transaction = session.BeginTransaction();
    try
    {
        employeeService.Update(person);

        employeeService.CheckForRecursion();

        transaction.Commit();
    }
    catch(Exception exp)
    {
        if (!transaction.WasRolledBack)
            transaction.Rollback();
    }
}

Den CheckForRecursion verwendet SQL, um sich für die Rekursion eingeführt durch das Letzte update, wenn ich also rückgängig machen wollen. Bei der Rekursion eingeführt wurde eine Ausnahme von Blasen von SQL, richtig so, und ich Fang es und versuchen Sie ein rollback. Das ist, wenn ich den Fehler Auftritt.

Ich gewickelt habe den rollback in einem try-catch, damit die ganze Sache weiter machen können, aber ich sehe die gleiche Ausnahme auf jeder nachfolgenden iteration der for-Schleife.

Ideen? Ist das Muster korrekt?

Schreibe einen Kommentar