entity-framework - 我不能在事务范围内的Entity Framework中调用存储过程吗?

标签 entity-framework stored-procedures transactionscope

我有一个使用 Entity Framework 在不同实体中进行某些更改/插入的方法,所有这些都在单个事务范围内进行。这些更改效果很好。

当我需要在这些操作中间使用存储过程时,我的问题就开始了。该过程仅在一个表中进行插入,而没有显式的事务声明。我尝试过声明一个事务并在那里提交,但是问题是一样的。

我不能在事务范围内从 Entity Framework (EF1)调用存储过程吗?

当using块关闭时,仅在transaction.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()

内部异常(exception):
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调用该过程,这是我的解决方法。但是问题仍然存在,我应该在不久的将来,也许是在交易范围内,打一些电话。

最佳答案

带有修复程序的错误? ta田

关于entity-framework - 我不能在事务范围内的Entity Framework中调用存储过程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2109029/

相关文章:

c# - 为什么在使用 Entity Framework 6.x 通过 SqlQuery 从 View 中获取数据时不使用我的 ColumnAttribute?

mysql - 在 MySql 数据库的 Entity Framework 中运行更新数据库时表 'xxx.__MigrationHistory' 不存在错误

tsql - 从另一个存储过程中的存储过程中获取值

db2 - TransactionScope 不适用于 DB2 提供者

c# - 如何解决以下MappingException

c# - Entity Framework - 获取 SQL Server 字段数据类型

Mysql Date 在 where 子句中?

存储过程中mysql版本错误

java - 重复插入

transactions - StackExchange.Redis 支持 TransactionScope 吗?