Практическое руководство. Выбор ситуаций, в которых создаются исключения параллельности
В LINQ to SQL ChangeConflictException исключение возникает, когда объекты не обновляются из-за конфликтов оптимистического параллелизма. Дополнительные сведения см. в разделе "Оптимистическое параллелизм". Обзор.
Перед отправкой изменений в базу данных можно указать момент возникновения исключений блокировки.
Создавать исключение при первом сбое (FailOnFirstConflict).
Завершить все попытки обновления, собрать все ошибки и сообщить о них в исключении (ContinueOnConflict).
Созданное исключение ChangeConflictException предоставляет доступ к коллекции ChangeConflictCollection. Данная коллекция содержит сведения о каждом конфликте (сопоставленном с одной неудачной попыткой обновления), включая доступ к коллекции MemberConflicts. Каждый конфликт члена сопоставляется с одним членом в обновлении, которое привело к сбою проверки блокировки.
Пример
В следующем коде приведены примеры обоих значений.
Northwnd db = new Northwnd("...");
// Create, update, delete code.
db.SubmitChanges(ConflictMode.FailOnFirstConflict);
// or
db.SubmitChanges(ConflictMode.ContinueOnConflict);
Dim db As New Northwnd("...")
' Create, update, delete code.
db.SubmitChanges(ConflictMode.FailOnFirstConflict)
' or
db.SubmitChanges(ConflictMode.ContinueOnConflict)