【问题标题】:read ConnectionString from appsettings.json for entity.Framework从 appsettings.json 中为 entity.Framework 读取 ConnectionString
【发布时间】:2018-07-12 12:48:00
【问题描述】:

我尝试从 appsettings.json 中为 entityFramework 和 MySQL 读取 ConnectiongString,但出现错误:

System.ArgumentNullException: Value cannot be null.
Parameter name: connectionString

这是我的 appsettings.json:

{
  "Data": {
    "ConnectionStrings": {
      "DefaultConnection": "server=database;userid=hawai;pwd=mysecret;port=3306;database=identity;sslmode=none;",
      "MigrationConnection": "server=127.0.0.1;userid=hawai;pwd=mysecret;port=3306;database=identity;sslmode=none;"
    }
  }
}

这是我的启动:

    public class Startup
        {
            public IConfiguration Configuration { get; set; }

            public Startup(IHostingEnvironment env)
            {
                var builder = new ConfigurationBuilder()
                    .SetBasePath(env.ContentRootPath)
                    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                    .AddEnvironmentVariables();
                Configuration = builder.Build();

            }

            public void ConfigureServices(IServiceCollection services)
            {


                    var connection = Configuration.GetConnectionString("MigrationConnection");
                    services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(Configuration.GetConnectionString("MigrationConnection")));


                services.AddMvc();
}

这是我的 DBContext:

public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> dbContextOptions) :
            base(dbContextOptions)
        {

        }
        public DbSet<Person> People { get; set; }
    }

如果我将“MigrationConnection”更改为:

server=127.0.0.1;userid=xxx;pwd=xxx;port=3306;database=xxx;sslmode=none;

会是什么?

【问题讨论】:

  • ConnectionStrings 键不在根 Data &gt; ConnectionString &gt; MigrationConnection 上,所以 GetConnectionString("MigrationConnection") 无法找到它。更新代码中的路径或更新设置文件。

标签: c# entity-framework connection-string


【解决方案1】:

您收到错误是因为Configuration.GetConnectionString("MigrationConnection") 返回null。它应该替换为:

var connection = Configuration.GetSection("Data").GetConnectionString("MigrationConnection");

或者你可以把appsettings.json的结构改成:

{
    "ConnectionStrings": {
      "DefaultConnection": "server=database;userid=hawai;pwd=mysecret;port=3306;database=identity;sslmode=none;",
      "MigrationConnection": "server=127.0.0.1;userid=hawai;pwd=mysecret;port=3306;database=identity;sslmode=none;"
    }  
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    相关资源
    最近更新 更多