IOW, есть стандартный способ тестирования для этого, а-ля:
if (! con.Open()) con.Open();
UPDATE: Думаю, я не упомянул, что это компоненты Oracle ODP, которые я использую. Компонент OracleConnection не имеет свойства ConnectionState.
Используйте свойство Connection.State , чтобы проверить, открыто ли уже соединение
if(con.State == ConnectionState.Closed){ con.Open(); }
if(Con.State != ConnectionState.Open) con.Open();
если вы хотите открывать только закрытые соединения, вы можете использовать
if(Con.State == ConnectionState.Close) con.Open();
ConnectionState: http://msdn.microsoft.com/en-us/library/system.data.connectionstate.aspx
Вам нужно разделить ваш код на отдельные слои, чтобы избежать этого.Соединение следует открывать только в основном методе (в API - не в основном методе приложения), а затем переходить к координирующим (частным) методам, которые просто используют соединение без управления соединением (открытие, закрытие, операции транзакций и т. Д.).).Это обеспечивает чистоту вашего кода и безопасность ваших транзакций / соединений.