Procedura: specificare quando vengono generate le eccezioni di concorrenza (LINQ to SQL)
In LINQ to SQL un'eccezione ChangeConflictException viene generata quando gli oggetti non vengono aggiornati a causa di conflitti di concorrenza ottimistici. Per ulteriori informazioni, vedere Cenni preliminari sulla concorrenza ottimistica (LINQ to SQL).
Prima di inviare le modifiche al database, è possibile specificare quando dovranno essere generate le eccezioni di concorrenza:
Generare l'eccezione al primo errore (FailOnFirstConflict).
Completare tutti i tentativi di aggiornamento, accumulare tutti gli errori e segnalare gli errori accumulati nell'eccezione (ContinueOnConflict).
Quando viene generata, l'eccezione ChangeConflictException fornisce l'accesso a una raccolta ChangeConflictCollection. In questa raccolta vengono forniti i dettagli per ogni conflitto (associato a un unico tentativo di aggiornamento non riuscito), nonché l'accesso alla raccolta MemberConflicts. Per ogni conflitto fra membri viene eseguito il mapping a un unico membro nell'aggiornamento che non ha superato il controllo della concorrenza.
Esempio
Nel codice riportato di seguito vengono illustrati esempi di entrambi i valori.
Dim db As New Northwnd("...")
' Create, update, delete code.
db.SubmitChanges(ConflictMode.FailOnFirstConflict)
' or
db.SubmitChanges(ConflictMode.ContinueOnConflict)
Northwnd db = new Northwnd("...");
// Create, update, delete code.
db.SubmitChanges(ConflictMode.FailOnFirstConflict);
// or
db.SubmitChanges(ConflictMode.ContinueOnConflict);