如何在项目开始时执行迁移
How to execute a migration on project start
我想在 start.cs 文件中执行迁移命令。
因此,当应用程序首先 运行s 时,它会查找数据库,如果它不存在,那么它会 运行s 迁移脚本。
我知道您可以使用 "dotnet migrations" 在程序包管理器控制台中执行此操作,但我希望通过代码来执行此操作。
谢谢!
更新
看起来这对我有用
在我的 Startup.cs 文件中,在 Startup 构造方法中。
using (
var context = new PeopleContext(
_config,
new Microsoft.EntityFrameworkCore.DbContextOptions<PeopleContext>()
))
{
context.Database.EnsureCreated();
}
我在这里使用 "using" 语句来确保我的 DbContext 在我完成后关闭。
在我创建我的 context 之后我调用它的方法来确保数据库存在,如果没有然后我添加数据库和 运行 迁移。
我正在使用 ASP.NET 核心:NETStandard,版本=v1.6
几乎是截至 2016 年 9 月 1 日的最新佳作
更新 2
看起来使用 .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();
}
}
对于 .Net Core 应用程序启动时的 运行 EF7 迁移,我有:
在 ConfigureServices() 中
using (var dataContext = (DataContext)app.ApplicationServices.GetService(typeof(DataContext)))
{
dataContext.Database.Migrate();
}
这 运行 是启动时的新迁移。
我不确定 EnsureCreated 是否会在初始 table 创建后 运行 新迁移?
参见:http://thedatafarm.com/data-access/ef7-ensurecreated-vs-migrate-methods/
我想在 start.cs 文件中执行迁移命令。 因此,当应用程序首先 运行s 时,它会查找数据库,如果它不存在,那么它会 运行s 迁移脚本。
我知道您可以使用 "dotnet migrations" 在程序包管理器控制台中执行此操作,但我希望通过代码来执行此操作。
谢谢!
更新
看起来这对我有用
在我的 Startup.cs 文件中,在 Startup 构造方法中。
using ( var context = new PeopleContext( _config, new Microsoft.EntityFrameworkCore.DbContextOptions<PeopleContext>() )) { context.Database.EnsureCreated(); }
我在这里使用 "using" 语句来确保我的 DbContext 在我完成后关闭。
在我创建我的 context 之后我调用它的方法来确保数据库存在,如果没有然后我添加数据库和 运行 迁移。
我正在使用 ASP.NET 核心:NETStandard,版本=v1.6
几乎是截至 2016 年 9 月 1 日的最新佳作
更新 2
看起来使用 .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();
}
}
对于 .Net Core 应用程序启动时的 运行 EF7 迁移,我有:
在 ConfigureServices() 中
using (var dataContext = (DataContext)app.ApplicationServices.GetService(typeof(DataContext)))
{
dataContext.Database.Migrate();
}
这 运行 是启动时的新迁移。
我不确定 EnsureCreated 是否会在初始 table 创建后 运行 新迁移? 参见:http://thedatafarm.com/data-access/ef7-ensurecreated-vs-migrate-methods/