Partilhar via


Suporte a transações

O LINQ to SQL suporta três modelos de transação distintos. A seguir estão listados esses modelos na ordem das verificações realizadas.

Transação local explícita

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

É sua responsabilidade confirmar ou reverter a transação após a execução bem-sucedida da transação. A conexão correspondente à transação deve corresponder à conexão usada para construir o DataContext. Uma exceção é lançada se uma conexão diferente for usada.

Transação distribuível explícita

Você pode chamar LINQ to SQL APIs (incluindo, mas não limitado a SubmitChanges) no escopo de um arquivo Transaction. O LINQ to SQL deteta 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 neste caso. Você pode executar consultas e SubmitChanges execuções no contexto de tal transação.

Transação implícita

Quando você chama SubmitChangeso , o LINQ to SQL verifica se a chamada está no escopo de um Transaction ou se a Transaction propriedade (IDbTransaction) está definida como uma transação local iniciada pelo usuário. Se não encontrar nenhuma transação, o LINQ to SQL iniciará uma transação local (IDbTransaction) e a usará para executar os comandos SQL gerados. Quando todos os comandos SQL tiverem sido concluídos com êxito, o LINQ to SQL confirmará a transação local e retornará.

Consulte também