【阅读笔记】
EF里一共有5种状态(EntityState):
游离Detached=1,
未变化Unchanged=2,
新增Added=4,
已删除Deleted=8,
已修改Modified=16
添加:前台暂不处理,通常按生成视图就可以
[HttpPost] public ActionResult Create(Testmodel newtest) { try { // TODO: Add insert logic here if (ModelState.IsValid) { EntityState statebefore = db.Entry(newtest).State; //Detached 实际无效,跟踪效果 db.Testmodel.Add(newtest); EntityState stateAdd = db.Entry(newtest).State; //Added db.SaveChanges(); EntityState stateafter = db.Entry(newtest).State;//Unchanged return RedirectToAction("Index"); } } catch { ModelState.AddModelError("", "错误提示."); } return View(newtest); }
编辑:
public ActionResult Edit(int id) { TestModel test= db.TestModel.Find(id); return View(test); } [HttpPost] public ActionResult Edit(TestModel model) { // TODO: Add update logic here if (ModelState.IsValid) { EntityState statebefore = db.Entry(model).State; db.Entry(model).State = EntityState.Modified; int i= db.SaveChanges(); EntityState stateafter= db.Entry(model).State; return RedirectToAction("Index"); } return View(model); }
删除:
public ActionResult Delete(int id, bool? saveChangesError) { if (saveChangesError.GetValueOrDefault()) { ViewBag.ErrorMessage = "错误提示."; } return View(db.Testmodel.Find(id)); } // // POST: /Student/Delete/5 [HttpPost,ActionName("Delete")] public ActionResult DeleteConfirmed(int id) { try { // TODO: Add delete logic here Testmodel model= db.Testmodel.Find(id); EntityState statebefore = db.Entry(model).State; //UnChange db.Testmodel.Remove(model); EntityState stateafter = db.Entry(model).State;//Deleted db.SaveChanges(); EntityState stateaOk = db.Entry(model).State;//Detached return RedirectToAction("Index"); } catch { return View(); } }
没了