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á.