Хотелось бы узнать, как лучше всего управлять соединением с базой данных в asp.net.
Мое приложение построено с использованием архитектуры N-уровня.
DAL состоит из статических классов с такими методами, как
Public Shared Sub Delete( _
ByVal connection As MyConnectionClass, _
ByVal contact_id As Integer, _
ByVal contact_timestamp As Date _
)
With connection.ProcParams
.Add(New StoredProcParam("p_contact_id", contact_id, OracleDbType.Int32))
.Add(New StoredProcParam("p_contact_timestamp", contact_timestamp, OracleDbType.Date))
End With
connection.Execute("PKG_DATA_ACCESS.DeleteContact")
End Sub
Здесь следует отметить, что я передаю соединение с DAL из BLL.
Вот пункты, которые я рассмотрел, но ни один из них не кажется мне подходящим, поэтому я просто прошу совета.
Должен ли я создать соединения в MasterPage, сохранить их в объекте, а затем передать их своим бизнес-объектам по мере их создания (то, чего я пытаюсь избежать)
Должен ли я создать соединение с использованием статического класса и вызвать для него метод, подобный CreateConnection, из конструктора моих бизнес-объектов (Что-то, что я хотел бы, но я не хочу иметь соединение для объекта, я Мне бы хотелось, чтобы он был общим для всех экземпляров моих объектов, но поскольку asp.net является многопоточным, статический класс не имеет смысла хранить соединения)
В идеале, решение должно также хорошо работать в среде Windows Forms (поэтому не нужно сохранять соединение в сеансе и извлекать его статическим методом в классе для текущего контекста)