Я пытаюсь использовать область транзакции внутри цикла. Весь цикл происходит с использованием одного подключения к базе данных. Я использую Entity Framework 4 для доступа к базе данных. Во время второй итерации цикла, когда выполняется запрос LINQ to Entites, генерируется исключение, указывающее, что 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
Редактировать: вместо TransactionScope, если я использую connection.BeginTransaction (), транзакция.Commit () и транзакция.Rollback (), он работает нормально. Однако я все же хотел бы найти способ заставить TransactionScope работать.