Почему одно общедоступное соединение OleDbConnection устарело? Альтернатива исправлению ошибки: открыто слишком много соединений

Мне приходится работать с Проектом, созданным другим разработчиком. Проект Win-Form с кодом Visual-Basic, с MS-Access как db и некоторыми OleDbConnections. Есть ошибка: иногда приложение не может открыть OleDbConnection, потому что на базе данных достигнуто максимальное количество подключений. Я знаю, что лучший способ использовать соединения:

Using cn As New OleDbConnction(s)
  ...
  cn.Close()
End Using

Но в проекте есть много классов для работы с базой данных, и во многих из этих классов есть OleDbConnections с видимостью «Друг», которые открываются и закрываются в разные времена. По этой причине невозможно поместить все OleDbConnections в конструкцию Using, и очень и очень сложно определить, какая операция «забывает» закрыть одно из этих OleDbConnection.

Возможным решением может быть использование только одного уникального общедоступного OleDbConnection, и перед открытием проверить, не открыт ли он еще. Но кто-то сказал мне, что это очень плохая практика. Я полагаю, он рассказал мне это о спектакле, но я точно не знаю. Можете ли вы сказать мне, почему один уникальный общедоступный OleDbConnection так устарел? У вас есть для меня "легкое" решение моей проблемы? Спасибо, Pileggi

6
задан JasonMArcher 27 July 2015 в 03:10
поделиться