我有 2 个 Postgres 数据库,每个数据库都在它们自己的 CloudSQL 实例中,还有一个在 GKE 中运行的 .NET Web 应用程序。
目标:使用 EntityFramework Core 将 Web 应用程序连接到使用单个 CloudSQL 代理的两个 CloudSQL 实例。
每个 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"42P01: relation {my_Table_Name} does not exist."
在尝试访问表时抛出 PostgresException。
注意:"my_Table_Name"
是 CloudSQL instance2 中的一个表
这让我相信 Context2 正在尝试访问 CloudSQL instance1 而不是 instance2。
如何通过 SQL 代理将 Context2 指向 CloudSQL instance2?