У меня проблема с формой редактирования ниже, она никогда не перехватывает DbUpdateConcurrencyException . Что я делаю неправильно?
Класс
public class EditViewModel
{
[Timestamp]
public byte[] RowVersion { get; set; }
}
Контроллер
[AcceptVerbs("POST", "PUT")]
public ActionResult EditData(System.Web.Mvc.FormCollection formData)
{
int year = Convert.ToInt32(formData["year"]);
int itemID = Convert.ToInt32(formData["itemID"]);
byte[] rowVersionID = Encoding.UTF8.GetBytes(formData["RowVersion"]);
string row = Convert.ToBase64String(rowVersionID);
if (ModelState.IsValid) {
string[] itemIDArray = formData.GetValues("item.itemID");
using(BusinessLogicLayer BLL = new BusinessLogicLayer()) {
for (int i = 0; i < itemIDArray.Count(); i++) {
try
{
BLL.UpdateItem(Convert.ToInt32(itemIDArray[i]));
BLL.SaveChanges();
}
catch (DbUpdateConcurrencyException ex) //it never catches the exception
{
// Get the current entity values and the values in the database
// as instances of the entity type
var entry = ex.Entries.Single();
var databaseValues = entry.GetDatabaseValues();
ModelState.AddModelError(string.Empty, "The record you attempted to
edit has been modified by another user. Please try again!");
}
}
}
}
return View();
}
}
}
Я также установил для столбца RowVersion «Режим параллелизма» фиксированный
редактирует
Я также изменил исключение блока catch на универсальное, и теперь я получаю следующую ошибку: