Поделиться через


Поддержка транзакций

LINQ to SQL поддерживает три модели отдельных транзакций. Далее представлен список этих моделей в порядке выполненных проверок.

Явные локальные транзакции

При вызове SubmitChanges, если свойству Transaction задана транзакция (IDbTransaction), вызов SubmitChanges выполняется в контексте этой же транзакции.

Вашей обязанностью является выполнение фиксации или отката транзакции после ее успешного выполнения. Подключение, соответствующее транзакции, должно совпадать с подключением, используемым для создания DataContext. При использовании разных подключений создается исключение.

Явные распределяемые транзакции

Вы можете вызывать API-интерфейсы LINQ to SQL (включая, но не ограниченныеSubmitChanges) в область активногоTransaction. LINQ to SQL обнаруживает, что вызов находится в область транзакции и не создает новую транзакцию. LINQ to SQL также избегает закрытия подключения в этом случае. В контексте данной транзакции можно осуществить запрос и выполнения SubmitChanges.

Неявные транзакции

При вызове SubmitChangesLINQ to SQL проверка, чтобы узнать, находится ли вызов в область объекта или Transaction Transaction если для свойства (IDbTransaction) задана локальная транзакция, запущенная пользователем. Если он не находит ни транзакцию, LINQ to SQL запускает локальную транзакцию (IDbTransaction) и использует ее для выполнения созданных команд SQL. После успешного завершения всех команд SQL LINQ to SQL фиксирует локальную транзакцию и возвращает.

См. также