我希望在start.cs文件中执行一个迁移命令。 因此,当应用程序首次运行时,它会查找数据库,如果它不存在,则会运行迁移脚本。
我知道您可以使用“dotnet迁移”在包管理器控制台中执行此操作,但我希望通过代码执行此操作。
谢谢!
在我的Startup.cs文件中,在Startup构造函数方法中。
using (
var context = new PeopleContext(
_config,
new Microsoft.EntityFrameworkCore.DbContextOptions<PeopleContext>()
))
{
context.Database.EnsureCreated();
}
我在这里使用“using”语句,以确保在完成后我的DbContext关闭。
创建上下文后,我调用其方法以确保DataBase在那里,如果没有,则添加dataBase并运行迁移。
我正在使用ASP.NET Core:NETStandard,Version = v1.6
截至2016年9月1日的最新报道
看起来使用.Migrate()方法可能就是这样。
要使用.Migrate(),您需要添加
using Microsoft.EntityFrameworkCore;
以下是我现在使用的内容。
using (var context = new PeopleContext(_config,new Microsoft.EntityFrameworkCore.DbContextOptions<PeopleContext>()))
{
try
{
context.Person.Any();
}
catch (Exception ex)
{
//context.Database.EnsureCreated();
context.Database.Migrate();
}
}
答案 0 :(得分:3)
要在.Net Core的应用程序启动时运行EF7 Migrations,我有:
在ConfigureServices()中
using (var dataContext = (DataContext)app.ApplicationServices.GetService(typeof(DataContext)))
{
dataContext.Database.Migrate();
}
这会在启动时运行新的迁移。
我不确定EnsureCreated会在创建初始表后运行新的迁移吗? 见:http://thedatafarm.com/data-access/ef7-ensurecreated-vs-migrate-methods/