小编Cam*_*ell的帖子

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

我正在使用 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 …

c# mysql database dbcontext entity-framework-core

5
推荐指数
0
解决办法
1345
查看次数

CultureInfo 根据计算机设置而变化

我正在本地计算机和远程服务器上通过 IIS 运行 .NET 5 MVC Web 应用程序。

我注意到一个奇怪的错误,计算机的本地设置似乎会影响课程的CultureInfo结果

在Windows 10中,如果我打开Settings > Time & Language > Region,然后单击Change data formats使我的短时间为24小时,即13:40 vs 1:40 PM,那么结果CultureInfo也会改变。我一直认为更改计算机设置不会影响不同文化中内置的 .NET,并且无论代码在哪台计算机上运行,​​它们都应该是相同的,因此:

CultureInfo.CreateSpecificCulture("en-US");
Run Code Online (Sandbox Code Playgroud)

CultureInfo无论代码在哪台计算机上运行或者用户决定使用什么日期和时间设置,都应该返回相同的对象。

我最初想知道我是否使用了CultureInfo错误的类,所以我也尝试了:

new CultureInfo("en-US");
Run Code Online (Sandbox Code Playgroud)

但结果是一样的。

有没有什么方法可以告诉CultureInfo全班使用文化的默认值,而不是使用我计算机上当前的设置?

.net c# asp.net-mvc datetime asp.net-core

4
推荐指数
1
解决办法
906
查看次数