Джон, нет, вам не нужно использовать TransactionScope. Оптимистичный параллелизм обрабатывается автоматически Linq. Пример кода в предоставленной вами ссылке объясняет, что вам не нужно откатывать транзакции самостоятельно. Я бы использовал тот же код, что и в примере:
try
{
// Try to save changes, which may cause a conflict.
int num = context.SaveChanges();
Console.WriteLine("No conflicts. " +
num.ToString() + " updates saved.");
}
catch (OptimisticConcurrencyException)
{
// Resolve the concurrency conflict by refreshing the
// object context before re-saving changes.
context.Refresh(RefreshMode.ClientWins, orders);
// Save changes.
context.SaveChanges();
Console.WriteLine("OptimisticConcurrencyException "
+ "handled and changes saved");
}
Обратите внимание на обновление, повторное сохранение, которое решает вашу проблему. Вы можете проверить это, выдав исключение из блока try.
С наилучшими пожеланиями