Если вам действительно нужно открыть несколько соединений с базой данных одновременно (как другие заявили, что это не всегда хорошая идея), то вы обычно можете указать в строке соединения, что это необходимо.
Типичный сценарий, в котором я использовал это для использования DataReader для потоковой передачи строк из таблицы базы данных (так как я не знаю, сколько строк мне нужно в расширенной версии) и где мне затем нужно сделать дополнительные запросы к другим таблицы базы данных. Я делаю это, а не один запрос, так как для этого потребуется несколько сложных объединений, и у моего приложения есть хороший уровень кэширования для сокращения запросов к базе данных.
Для Microsoft SQL Server вы добавляете MultipleActiveResultSets=True;
в строку подключения