Хотя вы, вероятно, просто используете SQL Server, рекомендуется ознакомиться со всеми основными интерфейсами в System.Data
, поскольку все поставщики данных их реализуют. Я считаю, что свойство State
в IDbConnection
возвращает запрашиваемую информацию ( IDbConnection )
Также вы можете скрыть эту логику в каком-то централизованном методе:
public static IDbConnection RetrieveConnection(){
if(DataAccess.Connection.State == ConnectionState.Open) return DataAccess.Connection;
conn.Dispose(); //to be clean, I believe this is safe if it's already disposed
//retrieve configured connection string
//create and open connection
return DataAccess.Connection;
}
Так что, возможно, DataAccess
- это место, куда вы можете поместить и получить свой объект подключения, но я бы не хотел, чтобы все использовали его напрямую. Вместо этого попросите их пройти этот метод, который может гарантировать, что соединение можно использовать. Я просто пытаюсь дать вам идеи.
Также вы можете пойти дальше и использовать что-то вроде NHibernate, которое будет управлять соединениями и всем этим для вас. Хотя это не всегда стоит усилий, если проект небольшой.
РЕДАКТИРОВАТЬ: сделал код немного более явным