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


Транзакции (LINQ to SQL)

Обновлен: November 2007

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

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

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

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

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

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

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

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

См. также

Задачи

Как объединить в пакеты отправку данных с помощью транзакций (LINQ to SQL)

Другие ресурсы

Дополнительные сведения (LINQ to SQL)