Ваша база данных перейдет в базовый класс для ваших контроллеров. Этот базовый класс должен расширять Controller, а все ваши контроллеры должны расширять базовый класс. Вот небольшой пример:
public class BaseController : Controller
{
private AuthServices _auth;
private LogHelper _log;
private Repository _repository;
/// <summary>
/// <see cref="AuthServices"/>
/// </summary>
protected AuthServices Authorization
{
get { return _auth ?? (_auth = new AuthServices()); }
}
/// <summary>
/// <see cref="LogHelper"/>
/// </summary>
protected LogHelper Log
{
get { return _log ?? (_log = new LogHelper()); }
}
/// <summary>
/// <see cref="Repository"/>
/// </summary>
protected Repository Repository
{
get { return _repository ?? (_repository = new Repository()); }
}
}
Обратите внимание на ленивый экземпляр. Это позволяет мне проникнуть перед запуском тестов и установить мои личные поля с помощью макетов.
Что касается сеанса, ваш пользовательский объект все еще может быть сохранен в сеансе, как в традиционном приложении ASP.NET. Почти все вокруг (Response, Cache, Session и т. Д.), Но некоторые из них были обернуты классами из System.Web.Abstractions, чтобы их можно было смоделировать для тестирования. Все они по-прежнему ведут себя одинаково, хотя некоторые из них не следует использовать в их традиционной роли (например, не Response.Redirect, возвращайте ActionResult, например RedirectToRouteResult, который выполняет перенаправление).
Что касается обоснования ваших вопросов ....
Не делайте акцент на одном подключении к БД. В зависимости от вашей реализации это может быть даже плохой идеей, поскольку запросы могут наступать друг на друга. Просто откройте свое соединение, используйте его и утилизируйте / закройте, когда закончите.
Кроме того, одним из самых больших изменений, которые приносит MVC, является отказ от модели с состоянием, которую традиционная ASP.NET пыталась привнести в веб-разработку. Все эти рамки и представления больше не существуют (не обращайте внимания на человека за занавесом). Чем меньше у вас состояния, тем менее сложным и надежным будет ваше веб-приложение. Попробуйте, вам это может понравиться.