例如,我将如何做到这一点,以便在以下代码中 POST 操作可以获取缓存在 GET 操作中的实体。
Intellisense 告诉我,DbSet.Find()
它将在访问数据库之前检查上下文以查看实体是否已缓存。在这种情况下DbSet.Find()
,POST 操作中的内容确实会命中数据库,这意味着没有缓存任何内容。那么实体消失的 GET 操作和 POST 操作之间发生了什么变化?
我真的必须再次从数据库中拉回一个实体才能删除它吗?
public class UserController : Controller
{
private testContext db = new testContext();
// GET: /User/Delete/5
public ActionResult Delete(int id = 0)
{
User user = db.Users.Find(id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}
// POST: /User/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
User user = db.Users.Find(id);
db.Users.Remove(user);
db.SaveChanges();
return RedirectToAction("Index");
}
}