收到NHibernate Commit Transaction后'COMMIT TRANSACTION请求没有相应的BEGIN TRANSACTION。 “

时间:2011-03-18 13:56:06

标签: nhibernate transactionscope

我将事务范围用于分布式事务和NHibernate内部事务。 在所有操作之后,我检查Transaction.Current是否未中止并尝试提交NHibernate事务。

有时我会收到此错误:

  

COMMIT TRANSACTION请求没有相应的BEGIN TRANSACTION。   此会话中活动的事务已提交或中止   另一场会议。

使用以下stacktrace:

  

System.Data.SqlClient.SqlConnection.OnError(SqlException异常,   Boolean breakConnection)в   System.Data.SqlClient.SqlInternalConnection.OnError(SQLEXCEPTION   exception,Boolean breakConnection)   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject   stateObj)вSystem.Data.SqlClient.TdsParser.Run(RunBehavior   runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,   BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject   stateObj)в   System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(字节[]   buffer,TransactionManagerRequestType请求,String transactionName,   TransactionManagerIsolationLevel isoLevel,Int32超时,   SqlInternalTransaction事务,TdsParserStateObject stateObj,   Boolean isDelegateControlRequest)в   System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon(TransactionRequest   transactionRequest,String transactionName,IsolationLevel iso,   SqlInternalTransaction internalTransaction,Boolean   isDelegateControlRequest)в   System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransaction(TransactionRequest   transactionRequest,String name,IsolationLevel iso,   SqlInternalTransaction internalTransaction,Boolean   isDelegateControlRequest)в   System.Data.SqlClient.SqlInternalTransaction.Commit()в   System.Data.SqlClient.SqlTransaction.Commit()в   NHibernate.Transaction.AdoTransaction.Commit()。

此错误偶尔会出现的主要问题。这可能是什么原因?

1 个答案:

答案 0 :(得分:0)

看起来你不是通过集中代码打开你的sesions,而是每次关闭会话事务,否则我没有看到发生这种情况的原因..

确保您在抛出此错误的位置使用相同的代码路径..可能正在查看堆栈跟踪。