public async Task<ActionResult> EditDepartment(int? id, byte[] rowVersion) { if (!id.HasValue) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var departmentToUpdate = await _universityContext.Departments.FindAsync(id); var includeProperties = new[] { "DepartmentID", "Name", "Budget", "StartDate", "InstructorID", "RowVersion" }; if (departmentToUpdate == null) { departmentToUpdate = new Department(); TryUpdateModel(departmentToUpdate, includeProperties); ModelState.AddModelError(string.Empty, "Unable to save change the Department has already been deleted by another user."); } else if (TryUpdateModel(departmentToUpdate, includeProperties)) { try { _universityContext.Entry(departmentToUpdate).OriginalValues["RowVersion"] = rowVersion; await _universityContext.SaveChangesAsync(); return RedirectToAction("Index"); } catch (DbUpdateConcurrencyException ex) { var entry = ex.Entries.Single(); var clientValues = (Department)entry.Entity; var databaseEntry = entry.GetDatabaseValues(); if (databaseEntry == null) { ModelState.AddModelError(string.Empty, "Unable to save change the Department has already been deleted by another user."); } else { var databaseValues = (Department)databaseEntry.ToObject(); if (databaseValues.Name != clientValues.Name) { ModelState.AddModelError("Name", "Current value: " + databaseValues.Name); } ModelState.AddModelError(string.Empty, "The record was already edit by some other user"); departmentToUpdate.RowVersion = databaseValues.RowVersion; } } catch (RetryLimitExceededException) { ModelState.AddModelError("", "Something went wrong."); } } ViewBag.InstructorID = new SelectList(_universityContext.Instructors, "ID", "FullName", departmentToUpdate.InstructorID); return View(departmentToUpdate); }
public async Task<ActionResult> DeleteConfirmed(Department department) { try { _universityContext.Entry(department).State = EntityState.Deleted; await _universityContext.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { return RedirectToAction("Delete", new {concurrencyError = true, id = department.DepartmentID}); } catch (DataException) { ModelState.AddModelError(string.Empty, "Unable to delete"); } return RedirectToAction("Index"); }