Работа с .NET 8, EF (и MSSQL) и версией строки параллелизма [дубликат] ⇐ C#

Место общения программистов C#
Anonymous
Работа с .NET 8, EF (и MSSQL) и версией строки параллелизма [дубликат]

Сообщение Anonymous »

Я пытаюсь работать с EF и MSSQL. Все работает хорошо, но....
Теперь я использую rowversion (byte[]) в своем объекте. Я получаю на свой контроллер конкретный идентификатор продукта, описание и версию строки (поскольку мы передали версию строки из извлечения).
Мы нашли несколько разных способов правильного использования проверки параллелизма, хотя я еще не уверен.
Это — для меня — самая чистая часть (да, я пропустил некоторые части для простоты, например, сопоставители eq, репозитории, проверку и т. д. и т. п.):

Код: Выделить всё

 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

Вернуться в «C#»