Удаление SqlConnection в OnActionExecuted

Относительно этого фрагмента кода:

public class MyController : Controller
{
    SqlConnection db = new SqlConnection();

    public ActionResult Index()
    {
        //Fetch some data with db.
        //Maybe call some other private methods that use db.
        return View();
    }

    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        if (db != null)
            db.Dispose();

        base.OnActionExecuted(filterContext);
    }
}

1) Могу ли я быть уверен, что БД будет удалена в отношении любого потока жизненного цикла запроса MVC (исключения и т. д.)
2) Есть ли здесь какие-либо проблемы с точки зрения производительности?

(Я знаю, что есть более причудливые способы сделать это с наследованием/инъекцией, но меня интересует этот простой шаблон)


person Yaron Levi    schedule 30.09.2014    source источник
comment
В этих похожих ответах есть хорошее обсуждение здесь и здесь   -  person Abbath    schedule 01.10.2014
comment
Вы также можете просто обернуть любые вызовы БД с помощью using(db = new SqlConnection){}, который удалит объект в конце оператора.   -  person Tommy    schedule 01.10.2014