Entity Framework Core自动迁移

2019/05/15,EFCore 2.2.4

有两种方式:

1.使用Migrate()方法

if (DbContext.Database.GetPendingMigrations().Any())
{
    DbContext.Database.Migrate(); //执行迁移
}

Migrate()方法使用前需在程序包管理控制台执行Add-migration迁移命令。之后程序每次启动,GetPendingMigrations()都会去检测是否有待迁移内容,有的话,自动应用迁移。

GetPendingMigrations方法官方文档说明
获取在程序集中定义但尚未应用于目标数据库的所有迁移。

Migrate()方法官方文档说明
将上下文的任何挂起的迁移应用于数据库。 如果数据库尚不存在,将创建它。
请注意,此API与DbContext.Database.EnsureCreated()互斥。 EnsureCreated不使用迁移来创建数据库,因此以后无法使用迁移更新创建的数据库。

2.使用EnsureCreated()方法

//如果成功创建了数据库,则返回true
DbContext.Database.EnsureCreated()

此方法不需要先执行Add-migration迁移命令,如果数据库不存在,则自动创建并返回true。
如果已经创建了数据库后,又改动了实体Model和之前的库存在冲突,要注意删库让它自动重建,否则会报错。
注意,使用EnsureCreated()创建的数据库,是不带有__EFMigrationsHistory表的,所以使用该方法后无法再使用迁移更新已经创建的数据库

EnsureCreated方法官方文档说明
确保上下文的数据库存在。 如果存在,则不采取任何措施。 如果它不存在,则创建数据库及其所有模式。 如果数据库存在,则不会确保它与此上下文的模型兼容。

你可能感兴趣的:(c#,entityframework)