desde que você é rigoroso sobre descartar suas conexões, o padrão (pelo menos para o sql-server) é que ele funcionará automaticamente. No seu exemplo, você poderia ter apenas 3 subjacente conexões (uma por string de conexão).
Mas sempre certifique-se de que suas conexões sejam descartadas, de preferência com
using
:using(var conn = new SqlConnection(connectionString)) {
// use conn
}
em seguida, ele é liberado de volta para o pool (para reutilização quando a mesma string de conexão é vista em seguida) mesmo quando uma exceção é lançada.
Para desativar pooling (se você escolher), inclua
Pooling=false;
na cadeia de conexão.