У меня есть 2 базы данных Postgres, каждая в своем собственном экземпляре CloudSQL, и веб-приложение .NET, работающее в GKE.
Цель: подключить веб-приложение, использующее EntityFramework Core, к обоим экземплярам CloudSQL, используя один прокси-сервер CloudSQL.
Я следовал этой настройке и модифицировал ее, следуя этой S.O. ответить.
Для каждого экземпляра CloudSQL существует EF Core DbContext.
Контекстные соединения устанавливаются с использованием 2 переменных среды:
new Context1(
{
optionsBuilder.UseNpgsql(Environment.GetEnvironmentVariable("CONNECTION_1"));
});
new Context2(
{
optionsBuilder.UseNpgsql(Environment.GetEnvironmentVariable("CONNECTION_2"));
});
Переменные среды установлены как:
CONNECTION_1 = "Host=127.0.0.1;Port=5432;Database=postgres;Username=postgres;Password=password"
CONNECTION_2 = "Host=127.0.0.1;Port=5432;Database=postgres;Username=postgres;Password=password2"
Текущее поведение:
Context1 взаимодействует с CloudSQL instance1 как обычно.
Context2 генерирует PostgresException "42P01: relation {my_Table_Name} does not exist."
при попытке доступа к таблице.
Примечание: "my_Table_Name"
- это таблица в CloudSQL instance2
Это наводит меня на мысль, что Context2 пытается получить доступ к CloudSQL instance1 вместо instance2.
Как я могу указать Context2 через SQL Proxy на CloudSQL instance2?