如何在没有任何硬编码连接字符串的情况下在 DbContext 中设置 OnConfiguring 方法?

5 c# entity-framework-core asp.net-core

我使用了多个示例来了解如何设置 MySql 服务,但几乎每个示例(包括 Microsoft)都使用硬编码连接字符串。

这是我的启动:

    services.AddDbContext<DbContext>(options =>
    {
        options.UseMySql(configuration.GetConnectionString("DefaultConnection"),
        mysqlOptions =>
        {
            mysqlOptions.ServerVersion(new ServerVersion(new Version(8, 0, 18)));
        });
    });
Run Code Online (Sandbox Code Playgroud)

每当我尝试这样做时,Update-Database我都会看到一条错误消息,告诉我没有设置密码

MySql.Data.MySqlClient.MySqlException(0x80004005):用户“root”@“localhost”的访问被拒绝(使用密码:YES)。

环顾四周后,我发现了一个名为 的可重写方法OnConfiguring,但我想以动态方式设置连接字符串,因为如果我更改环境,我希望该字符串也更改。

在这里,我找到了几乎所有带有硬编码字符串的示例(例如https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core.html

Jaw*_*wad 0

在配置文件中,您应该有一个 ConnectionStrings 指向您的数据库以及其他选项。

"ConnectionStrings": {
   "DefaultConnection": "server=127.0.0.1;uid=root;pwd=12345;database=test"
},
Run Code Online (Sandbox Code Playgroud)

当您使用configuration.GetConnectionString时,您正在从配置部分查找值。