从appsettings.json中读取实体的ConnectionString.框架



我试图从appsettings.json中读取entityFramework和MySQL的ConnectiongString,但我得到了错误:

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

这是我的应用程序集.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;

可能是什么?

由于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;"
}  
}

相关内容

  • 没有找到相关文章

最新更新