Compartilhar via


Suporte a transações

LINQ to SQL dá suporte a três modelos de transação distintos. Veja a seguir esses modelos na ordem das verificações executadas.

Transação local explícita

Quando o método SubmitChanges é chamado, se a propriedade Transaction estiver definida como uma transação (IDbTransaction), a chamada SubmitChanges será executada no contexto da mesma transação.

Cabe a você confirmar ou reverter a transação após sua execução bem-sucedida. A conexão que corresponde à transação deve corresponder à conexão usada para construir a classe DataContext. Uma exceção será gerada se outra conexão for usada.

Transação distribuível explícita

Você pode chamar APIs do LINQ to SQL (incluindo, entre outras, SubmitChanges) no escopo de uma classe Transaction ativa. O LINQ to SQL detecta que a chamada está no escopo de uma transação e não cria uma nova transação. LINQ to SQL também evita fechar a conexão nesse caso. Você pode fazer a consulta e executar SubmitChanges no contexto de uma transação.

Transação implícita

Quando você chama SubmitChanges, o LINQ to SQL verifica se a chamada está no escopo de Transaction ou se a propriedade Transaction (IDbTransaction) está definida como uma transação local iniciada pelo usuário. Caso não encontre nenhuma transação, o LINQ to SQL inicia uma transação local (IDbTransaction) e usa essa transação para gerar comandos SQL. Quando todos os comandos SQL forem concluídos com êxito, o LINQ to SQL confirmará a transação local e os valores retornados.

Confira também