Сейчас я использую rowversion (
Код: Выделить всё
byte[]Мы нашли несколько разных способов правильно использовать проверку параллелизма, хотя я еще не уверен.
Это - для меня - самая чистая часть (да, я пропустил некоторые части для простоты, устройства отображения e.q., репозитории, проверка и т. д. и т. п.):
Код: Выделить всё
public async Task
UpdateAsync(string id, byte[] version, CancellationToken cancellationToken)
{
var product = await context.Products.FirstAsync(e => e.Id == id, cancellationToken);
product.DescrLg = "nope";
//product.Version = version; //this is not working
context.Entry(product).Property(p => p.Version).OriginalValue = version; //this works
context.Products.Update(product);
await context.SaveChangesAsync(cancellationToken);
return new Product(product.Id, product.DescrLg, product.Version); //this is a different viewModel
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... rowversion