Бөлісу құралы:


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

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 фиксирует локальную транзакцию и возвращает.

См. также