EF Core MySQL - 同一上下文中的多个架构

Cam*_*ell 5 c# mysql database dbcontext entity-framework-core

我正在使用 EFCore 连接到 MySQL 5.7 服务器,并尝试同时将 DbContext 连接到多个架构,但它始终默认为我在连接字符串中指定的数据库

"ConnectionStrings": {
    "Database": "server=localhost; port=3306; user id=user; password=pass; database=schema1;"
  }
Run Code Online (Sandbox Code Playgroud)

在我的 Context 类中,我尝试使用该ToTable("table", "schema")属性将实体设置为具有不同的架构

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<User>(entity =>
    {
        entity.ToTable("users", "schema1");
    });
    modelBuilder.Entity<Order>(entity =>
    {
        entity.ToTable("orders", "schema2");  
    }); 
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试从数据库检索数据时,出现以下错误:

MySql.Data.MySqlClient.MySqlException: 'Table 'schema1.orders' doesn't exist'
Run Code Online (Sandbox Code Playgroud)

如果我尝试一些明显错误的事情,比如

entity.ToTable("schema2.orders", "schema2");
Run Code Online (Sandbox Code Playgroud)

然后我毫不奇怪地得到了错误:

MySql.Data.MySqlClient.MySqlException: 'Table 'schema1.schema2.orders' doesn't exist'
Run Code Online (Sandbox Code Playgroud)

所以看起来好像它总是只使用database连接字符串中的。

如果我修改连接字符串以删除database,我相信这是朝着正确方向迈出的一步。

"ConnectionStrings": {
    "Database": "server=localhost; port=3306; user id=user; password=pass;"
  }
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

MySql.Data.MySqlClient.MySqlException: 'No database selected'
Run Code Online (Sandbox Code Playgroud)

我试图通过 MySQL 连接实现什么,或者对此功能的支持仅限于特定的数据库引擎