交易陷入僵局

时间:2014-08-07 06:24:40

标签: c# .net linq transactions

我在我的一个WCF webserice方法中遇到了关于“事务已死锁”的问题,该方法用于更新Server数据库中的大约8个表。我在我的WCF服务中使用LinqToSQL来执行所有与数据库相关的操作。

我的代码如下所示......

//Write code to open connection
foreach (var item in _updateList)
{
      dataTrans = this.Context.Connection.BeginTransaction(
           System.Data.IsolationLevel.ReadUncommitted
       );
      try{
            //Save Changes to database
            this.Context.SubmitChanges();                
            dataTrans.Commit();
       }
       catch (Exception ex)
       {
           //RollBack Datatransaction if any Table has invalid argument
           if (dataTrans != null)
              dataTrans.Rollback();
       }
}

并在我的例外日志中找到以下错误

事务(进程ID 71)在锁定时死锁与另一个进程通信缓冲资源并被选为死锁牺牲品。重新运行该交易。

.Net SqlClient Data Provider
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.HasMoreRows()
   at System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
   at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReaderBase`1.Read()
   at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Task.TaskMfssActionDtl.UpdateSqlToDevice(RequestSqlToDevice request)

0 个答案:

没有答案