Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

DbUpdateConcurrencyException will not be raised for entity framewrok

By: a guest on Apr 5th, 2012  |  syntax: None  |  size: 1.39 KB  |  views: 25  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. public ActionResult Edit(int id, FormCollection collection)
  2. {
  3.     Class c = repository.GetClass(id);
  4.     try
  5.     {
  6.         if (TryUpdateModel(c))
  7.         {
  8.             epository.Save();
  9.             return RedirectToAction("Details", new { id = c.ClassID });
  10.         }
  11.     }
  12.  
  13.     catch (DbUpdateConcurrencyException ex)
  14.     {
  15.         var entry = ex.Entries.Single();
  16.         var databaseValues = (Class)entry.GetDatabaseValues().ToObject();
  17.         var clientValues = (Class)entry.Entity;
  18.         if (databaseValues.ClassName != clientValues.ClassName)
  19.             ModelState.AddModelError("Name", "Current value: "
  20.             + databaseValues.ClassName);
  21.  
  22.         ModelState.AddModelError(string.Empty, "The record you attempted to edit "
  23.         + "was modified by another user after you got the original value. The "
  24.         + "edit operation was canceled and the current values in the database "
  25.         + "have been displayed. If you still want to edit this record, click "
  26.         + "the Save button again. Otherwise click the Back to List hyperlink.");
  27.         c.Timestamp = databaseValues.Timestamp;
  28.     }
  29.     catch (DataException)
  30.     {
  31.         //Log the error (add a variable name after Exception)
  32.         ModelState.AddModelError(string.Empty, "Unable to save changes. Try again, and if the problem persists contact your system administrator.");
  33.     }
  34.  
  35.     return View(c);
  36. }