我正在尝试在循环内使用事务范围。整个循环过程中只使用一个数据库连接。我正在使用Entity Framework 4进行数据库访问。在循环的第二次迭代期间,当执行LINQ to Entites查询时,会抛出一个异常,指出服务器上的MSDTC不可用。
我已经阅读了明确打开连接然后注册事务应该解决此问题的内容,但并没有成功。下面是示例代码,反映了正在进行的基本操作。
有什么想法可以防止升级到MSDTC?
我已经阅读了明确打开连接然后注册事务应该解决此问题的内容,但并没有成功。下面是示例代码,反映了正在进行的基本操作。
有什么想法可以防止升级到MSDTC?
Using context = New MyEntities()
Dim connection = context.Connection
connection.Open()
For index = 0 to (Me.files.Count - 1)
Dim query = From d In context.Documents
Where (d.DocumentID = documentID)
Select d.Status
Dim status = query.FirstOrDefault()
Using trans = New TransactionScope()
connection.EnlistTransaction(Transaction.Current)
Dim result = context.UpdateStatus(True)
If (result = 1) Then
WriteToFile()
trans.Complete()
End If
End Using
Next
End Using
编辑:如果我使用connection.BeginTransaction()、transaction.Commit()和transaction.Rollback(),而不是TransactionScope,它可以正常工作。然而,我仍然希望找到一种使TransactionScope正常工作的方法。