我是迁移的新手,我无法找到如何将我的更改添加到LiveDB中。
所以在开发时我添加到我的模型中
PM> add-migration <name>
PM> update-database
但是我在现场做什么?我正在希望我可以发布\ deploy to live并且迁移将运行并更新架构,但我想不是:)
Live SQL服务器在它自己的世界中关闭我无法从我的开发框访问它只是更改连接字符串并再次执行更新数据库。
你们做什么,文档在哪里?
谢谢,史蒂夫
随样本更新为3.0
Core 3.0方法类似于2.x,但是现在使用了通用主机。您将需要using Microsoft.Extensions.DependencyInjection;
添加using Microsoft.Extensions.DependencyInjection;
用于CreateScope()
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var db = scope.ServiceProvider.GetService<ShortenerContext>();
db.Database.Migrate();
}
host.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
更新了Core 2.0+的更好方法
迁移应使用诸如EF Core CLI工具之类的工具在Program.cs中运行,该工具会在正常执行中运行启动功能。
这是一个例子:
public class Program
{
public static void Main(string[] args)
{
var host = BuildWebHost(args);
using (var scope = host.Services.CreateScope())
{
var db = scope.ServiceProvider.GetService<ShortenerContext>();
db.Database.Migrate();
}
host.Run();
}
public static IWebHost BuildWebHost(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
}
在1.x中运行迁移的一种方法是在应用启动时仅添加以下内容:
public void Configure(
IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory,
ShortenerContext db)
{
db.Database.Migrate();
//Rest omitted
}
这将在启动时针对数据库执行所有挂起的迁移。
script-migration -From "last_migration_name" -To "current_migration_name"
或script-migration -idempotent