Изхвърляне на 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) Мога ли да съм сигурен, че db ще бъде унищожен по отношение на всеки поток от жизнения цикъл на MVC заявка (изключения и т.н.)
2) По отношение на производителността, има ли проблеми тук?

(Знам, че има по-фантастични начини да се направи това с наследяване/инжектиране, но се интересувам от този прост модел)


person Yaron Levi    schedule 30.09.2014    source източник
comment
Има добра дискусия в тези подобни отговори тук и тук   -  person Abbath    schedule 01.10.2014
comment
Можете също просто просто да обвиете всички db извиквания с using(db = new SqlConnection){} - което ще изхвърли обекта в края на оператора.   -  person Tommy    schedule 01.10.2014