实体框架DataContext关注 - 它是否在我的控制器中正确处理?

con*_*att 3 c# asp.net-mvc entity-framework

我已经交了一些代码,并且在控制器类中有一个属性,它包含初始化的数据库上下文.

public class MyController: Controller
{
    protected AssetManagerContext db = new AssetManagerContext("ConnectionString");
    // Actions...etc.

    [HttpGet]
    public ActionResult Edit(int id)
    {
        MyAsset myAsset = db.Assets.Find(id); // Used and not disposed
        return View(myAsset);
    }
 }
Run Code Online (Sandbox Code Playgroud)

大多数操作使用此Context而不处理它,我担心的是上下文保持开放.

  1. 我是否需要关注此上下文未被显式关闭(通过.Dispose()或using {}语句

  2. 如果我应该担心,我应该如何处理这种情况,因为变量是类的一部分并在操作中使用?

Kun*_*han 6

Controller类有一个dispose方法.因此,在控制器中覆盖该方法并处理该上下文.

protected override void Dispose(bool disposing)
{
   base.Dispose(disposing);
   db.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

它将在上下文完成后自动调用.