Ich habe eine NHibernate-Transaktion, die etwas Arbeit und ruft eine Legacy-Methode, die DBTransactions verwendet, um mehrere Stored Procedures aufzurufen. Wenn einer dieser Legacy-Methodenaufrufe fehlschlägt, sollte die NHibernate-Transaktion zurückgesetzt werden.NHiberate verschachtelte Transaktion blockiert
Das Problem besteht darin, dass die Legacy-Methoden Daten in der Datenbank verwenden, die die NHibernate-Transaktion erstellt. Dies bewirkt, dass der SQL-Prozess des Legacy-Codes gesperrt wird, während auf den Nhibernate-Prozess gewartet wird. Der Nhibernate-Prozess wartet darauf, dass der Legacy-SQL-Prozess beendet wird, wodurch ein Deadlock verursacht wird.
Ich habe versucht, ReadUncommitted für beide Transaktionen, aber das funktioniert nicht.
Ich habe versucht, eine verteilte Transaktion einzurichten, indem ich System.EnterpriseServices wie im NHibernate in Action empfohlen, aber das scheint auch nicht zu funktionieren.
Ich bin nicht wirklich sicher, wo ich von hier aus gehen soll.
Vielen Dank für Ihre Hilfe. Ich ging mit Option 3 aufgrund der Art und Weise ist das System zur Zeit entwickelt. Ich habe TransactionScope anstelle von NHibernate oder ADO Transactions verwendet. Flush, bevor die Transaction beendet dann die Transaktion abgeschlossen. Nochmals vielen Dank für Ihre Hilfe. – Adam