Transazioni (LINQ to SQL)
In LINQ to SQL vengono supportati tre modelli di transazione distinti. Di seguito sono elencati tali modelli nell'ordine di esecuzione dei controlli.
Transazione locale esplicita
Quando si chiama SubmitChanges, se la proprietà Transaction è impostata su una transazione (IDbTransaction), la chiamata SubmitChanges viene eseguita nel contesto della stessa transazione.
È compito del programmatore eseguire il commit o il rollback della transazione dopo che ne è stata completata l'esecuzione. La connessione corrispondente alla transazione deve essere la stessa utilizzata per costruire DataContext. Se si utilizza una connessione diversa, viene generata un'eccezione.
Transazione distribuibile esplicita
È possibile chiamare le API LINQ to SQL (incluso, senza limitazione, l'oggetto SubmitChanges) nell'ambito di un oggetto Transaction attivo. LINQ to SQL rileva che la chiamata si trova nell'ambito di una transazione e non ne crea una nuova. Inoltre, in questo caso, in LINQ to SQL la connessione non viene chiusa. Nel contesto di tale transazione è possibile eseguire query ed esecuzioni di SubmitChanges.
Transazione implicita
Quando si chiama l'oggetto SubmitChanges, in LINQ to SQL viene controllato se la chiamata si trova nell'ambito di una transazione Transaction o se la proprietà Transaction (IDbTransaction) è impostata su una transazione locale avviata dall'utente. Se non viene trovata alcuna transazione, in LINQ to SQL viene avviata una transazione locale (IDbTransaction) che verrà utilizzata per eseguire i comandi SQL generati. Dopo aver completato correttamente l'esecuzione di tutti i comandi SQL, in LINQ to SQL viene eseguito il commit della transazione locale e restituito un valore.
Vedere anche
Attività
Procedura: raggruppare gli invii dei dati mediante le transazioni (LINQ to SQL)