Код: Выделить всё
var book = await _context.Books.FirstOrDefaultAsync(b => b.Id == id);
if (book == null || !book.IsAvailable)
{
return RedirectToAction("Index");
}
var reservation = new Reservation
{
BookId = book.Id,
UserId = user.Id,
ReservedAt = DateTime.Now,
DueDate = DateTime.Now.Date.AddDays(1).AddHours(23).AddMinutes(59).AddSeconds(59),
IsLease = false
};
book.IsAvailable = false;
var rv = Convert.FromBase64String(RowVersion);
_context.Entry(book).Property(b => b.RowVersion).OriginalValue = rv;
try
{
_context.Reservations.Add(reservation);
_context.Books.Update(book);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
ViewData["ErrorMessage"] = "Book already reserved by another user.";
return RedirectToAction("Index", new { searchTitle = searchTitle });
}
Код: Выделить всё
[Timestamp]
public byte[] RowVersion { get; set; }
Я также пытался включить AsNoTracking, как в учебнике Microsoft, но это ничего не изменило.
Подробнее здесь: https://stackoverflow.com/questions/792 ... ing-rowver
Мобильная версия