У меня есть метод, который использует Платформу Объекта, чтобы сделать, некоторые изменяются/вставляют в различных объектах, вся эта внутренняя часть единственная область транзакций. Эти изменения работают очень хорошо.
Моя проблема имеет, начался, когда я должен был использовать хранимую процедуру посреди этих операций. Процедура делает только вставку в одной таблице и не имеет никакого явного объявления транзакций. Я попытался объявить транзакцию и фиксировать там также, но проблемой было то же.
Разве я не могу назвать хранимую процедуру от Платформы Объекта (EF1) в области транзакций?
Это исключение выдается только после транзакции. Завершенный (), когда блок использования закрывается.
The transaction has aborted.
at System.Transactions.TransactionStatePromotedAborted.PromotedTransactionOutcome(InternalTransaction tx)
at System.Transactions.TransactionStatePromotedEnded.EndCommit(InternalTransaction tx)
at System.Transactions.CommittableTransaction.Commit()
at System.Transactions.TransactionScope.InternalDispose()
at System.Transactions.TransactionScope.Dispose()
Внутреннее исключение:
The transaction operation cannot be performed because there are pending requests working on this transaction.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(Byte[] buffer, TransactionManagerRequestType request, String transactionName, TransactionManagerIsolationLevel isoLevel, Int32 timeout, SqlInternalTransaction transaction, TdsParserStateObject stateObj, Boolean isDelegateControlRequest)
at System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon(TransactionRequest transactionRequest, String transactionName, IsolationLevel iso, SqlInternalTransaction internalTransaction, Boolean isDelegateControlRequest)
at System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransaction(TransactionRequest transactionRequest, String name, IsolationLevel iso, SqlInternalTransaction internalTransaction, Boolean isDelegateControlRequest)
at System.Data.SqlClient.SqlDelegatedTransaction.SinglePhaseCommit(SinglePhaseEnlistment enlistment)
ОБНОВЛЕНИЕ: Запущенный щедрость
Сегодня я не делаю этого вызова процедуры через Платформу Объекта больше. Я называю процедуру через ADO.net, это было моим обходным решением. Но проблема продолжается, я должен должен быть выполнить некоторые вызовы в ближайшем будущем, возможно, в области транзакций.