то, что вы описываете, не имеет ничего общего с синглтон ... singleton сам по себе не является ни плохим, ни хорошим - только при неправильном использовании это плохо (как все).
как для вашего вопроса подключения:
Эта ситуация обычно решается/обрабатывается с помощью пула соединений ...
Вы можете осуществить это самостоятельно (не рекомендуется) ... в зависимости от ADO.NET провайдер, который вы используете, может уже поставляться с хорошо реализованным и хорошо протестированным пулом соединений (например, из Devart - не связанным, просто счастливым клиентом) ...
Пулы пулов предоставляют сортировку кэша для DB соединения ... когда вам нужен тот, который вы приобретете из пула, когда вы закончите, вы вернете его в пул ... th e pool поддерживает соединения вокруг (для некоторого настраиваемого периода времени с момента последнего использования или подобного) ... поскольку соединения в пуле уже созданы и открыты, вы получаете значительное преимущество в скорости ...
OTOH вы не можете реально прибыль от пула соединений, если соединения вы используете использовать различные логины и/или настройки соединения ...
UPDATE:
OleDB поставляется с встроенным соединительным механизмом Пулы - см MSDN для деталей. Согласно MSDN, он включен по умолчанию ... при закрытии/удалении соединения он будет автоматически возвращен в пул ... что, в свою очередь, означает для вашей ситуации, что вы уже можете использовать механизм объединения (при условии, что вы используете настройки по умолчанию для OleDB).
Я не буду участвовать в обсуждении singleton, но если вы используете статическую переменную для singleton, помните, что она будет не только распространена вместе с остальной частью страницы, но и с любой другой страницей, которая может работать в тот же пул приложений. Это усложнит ситуацию. –