"不允许启动新事务,因为有其他线程正在该会话中运行。"

今天把以前的项目拿来测试发现以前能用的现在就有问题了,报错信息如下。

{"IsSuccessful":false,
"ResultMsg":"在提供程序连接上启动事务时出错。有关详细信息,请参阅内部异常。   在 System.Data.Entity.Core.EntityClient.EntityConnection.BeginDbTransaction(IsolationLevel isolationLevel)\r\n   在 System.Data.Entity.Core.EntityClient.EntityConnection.BeginTransaction()\r\n   在 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   在 System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction)\r\n   在 System.Data.Entity.Core.Objects.ObjectContext.\u003c\u003ec__DisplayClass2a.\u003cSaveChangesInternal\u003eb__27()\r\n   在 System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   在 System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(SaveOptions options, Boolean executeInExistingTransaction)\r\n   在 System.Data.Entity.Core.Objects.ObjectContext.SaveChanges(SaveOptions options)\r\n   在 System.Data.Entity.Internal.InternalContext.SaveChanges()\r\n   在 System.Data.Entity.Internal.LazyInternalContext.SaveChanges()\r\n   在 System.Data.Entity.DbContext.SaveChanges()\r\n   在 Business.Repository`1.Update(TEntity entity, HandleResult\u0026 status) 位置 E:\\RS\\Business\\Repository.cs:行号 264",
"ResultData":null}

在执行了 EntityContext.SaveChanges();后报错"不允许启动新事务,因为有其他线程正在该会话中运行。"因为以前没注意过这个问题所有也不清楚为啥。浏览了论坛看到一哥子说的大概意思是查询一个连接,另一个连接提交事务。

我想大概就是我在查询的时候打开1个连接,但后面提交更新还是同一个连接,而更新提交时原来打开的没有停止就冲突了。所以我在我的循环里新建1个用于提交更新然后就嗯嗯ok。

你可能感兴趣的:(sql,server,事务)