gpt4 book ai didi

asp.net - 在应用程序启动时使用 Entity Framework ASP.NET Core 运行数据库迁移

转载 作者:行者123 更新时间:2023-12-02 14:14:25 25 4
gpt4 key购买 nike

我想在 ASP.NET Core 2.0 和 EntityFramework Core 2.0 中的应用程序启动时自动运行数据库迁移。

我找到了Run database migrations using Entity Framework core on application start 。但是,我的连接字符串存储在环境变量中,因此直到 .AddEnvironmentVariables() 才能找到它们。被称为 Configure方法。

如何调用the db.Database.Migrate()或者如何通过持续部署和临时环境正确进行数据库迁移(在 Azure Web App 中)?

public class Startup
{
private IConfigurationRoot Configuration { get; set; }

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

services.AddDbContext<ClientContext>(options => options.UseSqlServer(this.Configuration.GetConnectionString("AppService")));
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc();

this.Configuration = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables()
.Build();
}

// public void Configure(IApplicationBuilder app, ClientContext db)
// {
// db.Database.Migrate();
// }
}

最佳答案

根据您上面的评论,我会尝试这个:

public void Configure(IApplicationBuilder app, IServiceProvider serviceProvider)
{
app.UseMvc();

this.Configuration = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables()
.Build();

var db = serviceProvider.GetService<ClientContext>();
db.Database.Migrate();
}

这是在设置环境变量后手动解析ClientContext,因此参数注入(inject)不会失败。

编辑:您遇到的错误可以按照 this SO question 中的步骤解决。

关于asp.net - 在应用程序启动时使用 Entity Framework ASP.NET Core 运行数据库迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45191125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com