EF核心迁移

Ren*_*Str 1 ef-migrations entity-framework-core .net-core

我正在尝试对现有数据库使用迁移,并创建一个新数据库(如果不存在)。

EF Core文档说:

如果在数据库已经存在时创建了初始迁移,则会生成数据库创建代码,但由于数据库已经与数据模型匹配,因此不必运行该代码。当您将应用程序部署到尚不存在数据库的另一个环境时,此代码将运行以创建您的数据库

来自EFCore文档

我进行了初始迁移,它创建了一个上下方法来创建我的表。当我将其运行到新数据库(连接字符串中的新数据库名称)时,它将按预期创建数据库和表。

但是,如果我将其运行到现有数据库(不是由迁移创建的)上,则它在尝试创建已经存在的表的第一种启动方法上将失败,并且迁移将停止运行。

Docs说“不必运行”,但是迁移要做的第一件事就是尝试创建一个现有表。

如何防止迁移尝试创建现有表?迁移中是否内置了类似“如果不存在则创建”的内容?文档正确吗?它应该按预期/在文档中描述吗?

如果我做错了,与现有数据库和新数据库上的迁移一起使用的迁移策略是什么?

Dotnet Core版本:1.1。EFCore版本:1.1.2。

提前致谢。

Ste*_*ene 5

您需要对现有数据库进行基准迁移。在EF 6中,您使用了该-IgnoreChanges标志,但是Core中目前不存在该标志。看这里

通过注释掉所有Up()代码并应用该迁移,您可以在EF Core中完成相同的操作。这将创建__MigrationHistory表并插入一条记录,表明该表已被应用。

随后的迁移将同时应用于这两者,并且如果您需要创建一个新的数据库,您将被覆盖。