Не могу ли я вызвать хранимую процедуру из Entity Framework внутри области транзакции?

У меня есть метод, который использует Entity Framework для внесения некоторых изменений / вставок в разные сущности, все это внутри одной области транзакции. Эти изменения работают очень хорошо.

Моя проблема началась, когда мне нужно было использовать хранимую процедуру в середине этих операций. Процедура выполняет вставку только в одну таблицу и не имеет явного объявления транзакций. Я'мы пытались объявить транзакцию и совершить транзакцию, но проблема была та же.

Можно'я вызываю хранимую процедуру из Entity Framework (EF1) внутри области транзакции?

Это исключение выдается только после транзакции.Complete (), когда закрывающий блок закрыт.

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)

ОБНОВЛЕНИЕ: началось вознаграждение

Сегодня я'я больше не делаю этот вызов процедуры через Entity Framework. Я'Я вызывал процедуру через ADO.net, это был мой обходной путь. Но проблема остается, мне нужно сделать несколько звонков в ближайшем будущем, возможно, в рамках транзакции.

Ответы на вопрос(2)

Ваш ответ на вопрос