Вы можете реализовать Оптимистичный параллелизм
Оптимистичный параллелизм предполагает, что выполняемое обновление будет принято, но до внесения изменений в базу данных исходные значения записи сравниваются ссуществующей строки в базе данных и при обнаружении каких-либо изменений возникает исключение параллелизма.
Его можно включить, добавив свойство RowVersion
, как показано ниже
public class Model
{
public int Id {get;set;}
........ // Other Properties
public int Value {get; set;}
[TimeStamp]
public byte[] RowVersion { get; set; }
}
Столбец RowVersion
будет настроен как тип базы данных, который обеспечивает автоматическое управление версиями строк.
Теперь вы можете заключить метод SaveChangesAsync
в try-catch
для решения проблем оптимистичного параллелизма. Проверьте Документы Microsoft для получения более подробной информации.
try
{
// business logic
await _context.SaveChangesAsync();
// Other business logic
}
catch (DbUpdateConcurrencyException ex)
{
// your logic to handle optimistic concurrency.
}