【阅读笔记】
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();
}
}
没了