例として、次のコードで POST アクションが GET アクションでキャッシュされたエンティティを取得できるようにする方法を教えてください。
インテリセンスは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");
}
}