如何在ASP.net Core中基於環境添加DbContext

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

這就是我目前在Startup.cs中的ConfigureServices方法中添加DbContext的方法:

public void ConfigureServices(IServiceCollection services)
{
    .....

    services.AddDbContext<MyDbContext>(options =>
        options.UseMySQL(Configuration.GetConnectionString("DefaultConnection")));

    .....

}

我的連接字符串存儲在我的appsettings.json文件中,例如:

{
    ....
  "ConnectionStrings": {
    "DefaultConnection": "server=localhost;user id=root;password=root;database=mydb;sslmode=none"
  }

  ....

}

如果我想切換正在連接的數據庫,如果它是“開發”與“生產”環境,如何使“services.AddDbContext()”切換數據庫?

一般承認的答案

您可以在不同的appsettings文件中配置不同的環境連接字符串,如下所示

對於測試環境,請使用appsettings。 測試 .json

 "Data": {
    "MyDbContext": {
      "ConnectionString": "" /*<<== TestDatabase connection string */
    },

對於prod環境,請使用appsettings。 prod .json

 "Data": {
    "MyContext": {
      "ConnectionString": "" /*<<== ProdDatabase connection string */
    },

使用ASPNETCORE_ENVIRONMENT環境變量將當前環境設置為Test或Prod值。

在Startup中,您可以像這樣使用 -

     services.AddDbContext<MyContext>(options =>
options.UseSqlServer(Configuration["Data:MyContext:ConnectionString"]));


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow