Ответ 1
Я не рекомендую использовать статический, так как вы можете получить такие ошибки, как "Существует уже открытый DataReader, связанный с этой командой" , поскольку то же соединение используется разными запросами, использующими один и тот же ресурс.
Два варианта:
1. Создайте соединение в базовом классе контроллера
public class BaseController : Controller
{
protected DatabaseWithMVCMiniProfiler _database;
protected override void OnActionExecuting(ActionExecutingContext filterCon )
{
base.OnActionExecuting( filterCon );
_database = new DatabaseWithMVCMiniProfiler( "MainConnectionString");
}
}
2. Статический метод, создающий одно соединение для запроса
public static class DbHelper {
public static Database CurrentDb() {
if (HttpContext.Current.Items["CurrentDb"] == null) {
var retval = new DatabaseWithMVCMiniProfiler("MainConnectionString");
HttpContext.Current.Items["CurrentDb"] = retval;
return retval;
}
return (Database)HttpContext.Current.Items["CurrentDb"];
}
}