ASP.NET MVCのController内でDBContextの宣言位置による接続解除の挙動
ネットで見ると、
DBContext db = new DBContexxt();
の内容をControllerのアクション外に定義している場合とアクション内に定義している場合がありました。
アクション外では
namespace crud.Controllers
{
public class HomeController : Controller
{
//context as db
private MyContext db = new MyContext();
...
といった感じです。
アクション内では
[HTTPPost]
public ActionResult Create(Human h)
{
using(DBContext db = new DBContext())
{
if (ModelState.IsValid)
{
db.Human.Add(h);
db.SaveChanges();
return RedirectToAction("Index");
}
}
}
HTTPPostのActionResultメソッド内で書かれている内容はPostの都度、DBに接続+解除していますが、アクション外でContextを宣言している場合はいつ解除(Dispose)されているのでしょうか。
このあたりが明確に理解できていませんので、ご教授いただけると幸いです。