Почитал нитку — руль!
С одним соединением возникнут проблемы при
паралельном доступе — это факт.
Но если доступ
не паралельный, то используй на здоровье одно соединение!
Я делал так: создавал отдельную библиотеку в ней статический класс, внутри класса есть private HashTable, в котором храняться открытые соединения, для каждого потока, обращающегося к классу. Соединения открываются при первом обращении потока к любому методу этого класса, а закрываются по DomainUnload или ProcessExit. В этом классе инкапсулированны все обращения к БД. Получается и конфликтов нет и соединение одно на поток. Можно их открывать/закрывать при выполнение конкретного действия, если держать открытыми неохота.
Удачи.