Что делать с PetaPoco при создании класса Database
? Мое приложение, вероятно, будет использовать различные репозитории (не совсем репозиторий DDD, скорее репозиторий шлюза) для инкапсуляции запросов.
Поскольку у меня будет несколько репозиториев, которым необходимо получить доступ к одному и тому же соединению с базой данных, я подумал о создании базового класса, который создает класс базы данных в конструкторе и вызывает Dispose
в его деструкторе, и просто вызывает этот объект во всех производных классах, поэтому Я думаю, что в этом сценарии мне не понадобится блок использования (поскольку, когда класс выходит за рамки, он закрывает саму базу данных).
Я также подумал о том, чтобы просто создать объект базы данных в global.axax методом Application_BeginRequest
, чтобы он был доступен на каждой странице, но я не совсем уверен, как это работает (я думаю, мне понадобится какой-то класс DatabaseManager
, который его создает Я видел этот подход только с такими вещами, как NHibernate и RavenDB), и это, кажется, подталкивает использование объекта базы данных к самой странице ASPX, а не через класс репозитория/уровня данных, что кажется вонючим.
Любые предложения, какой из этих подходов, если таковые имеются, будет работать лучше всего? Я также видел, что PetaPoco поддерживает «общее соединение», так что я хочу обратить внимание на это, чтобы свести к минимуму количество открытых соединений с базой данных?