2016-10-26 9 views
0

У меня следующая строка соединения:Npgsql строки подключения, динамическая база данных запроса

NpgsqlConnection conn = new NpgsqlConnection($"Server={_server};Port={_port};User ID={_userid};Password={_password};Database={database}");

Где database выбран из коллекции countrycodes (ГБ, США, DE и т.д.) и соответствующей базы данных является запрашиваемым ,

CountryCode выбран из ряда методов, которые определяют, где их latitude и longitude (UTM) лежат на карте (т.е. 51.503471, -0.119586 выведет: GB, потому что это в пределах ограничительной рамки Великобритании). Значения lat/lon передаются пользователем, поэтому они, вероятно, будут отличаться от каждого запроса и, возможно, в разных странах (и, следовательно, от другой базы данных).

Остальные данные соединения остаются неизменными, сервер/userid и т. Д. Не будут меняться, но запрашиваемая база данных может меняться каждый раз, когда пользователь отправляет lat/lon.

Есть ли способ открыть соединение без указания database в Postgres/Npgsql, или мне нужно будет повторно открыть (и закрыть в конце запроса) соединение при каждом запросе?

ответ

1

Нет, соединение PostgreSQL всегда связано с конкретной базой данных - вы не можете переключать базу данных, сохраняя одно и то же соединение.

Есть ли особая причина для разделения данных на разные базы данных? Отдельные схемы в одной и той же базе данных могут выполнять одну и ту же цель, не заставляя вас повторно подключаться и т. Д. Если вы должны использовать разные базы данных, объединение пулов может уменьшить влияние производительности постоянно закрывающих/открывающих соединений.

+0

Спасибо, что остановились у Шей! Есть несколько разных лет (все оправдано), но я не должен публиковать их в общественном достоянии. Я рассмотрю объединение пулов, похоже, это может быть только вариант. Ура! –