【发布时间】:2018-03-05 20:23:03
【问题描述】:
标题有点令人困惑,但我试图说明问题不是为现有数据库启动代码优先模型和迁移,而是在此之后出现。
我需要激活自动迁移,因为我们为我们的系统切换到了代码优先模型。所以,这就是我们所做的:
- 我为现有数据库创建了一个空 InitialCreate
- 我做了一些其他的脚本,因为有一些变化,那些工作正常,脚本已创建并在数据库上运行
当我想使用这些脚本并迁移另一个尚未以这种方式初始化的数据库时,就会出现问题。我不知道该怎么办。
当我尝试运行 Update-database 时出现错误:
Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration.
You can use the Add-Migration command to write the pending model changes to a code-based migration.
如果我执行添加迁移,它会再次创建一个迁移,其中包含所有内容,所有创建表,就像它忽略了我当前的脚本,有一个 InitialCreate 空和其他脚本的事实。
【问题讨论】:
-
您使用的 Db 可能缺少 _EFMIgrations 表?
-
嗯,是的,确实如此。那就是问题所在。我如何创建它们?手动?我认为更新数据库会这样做吗?我将如何在生产中做到这一点?
-
这将取决于之前应用的迁移以及您尝试应用的迁移。我只是猜测,这听起来像给你带来麻烦的 Db 丢失了针对其他数据库运行的所有或部分迁移。
-
数据库 1 是我首先配置代码优先迁移的数据库,它是一个现有数据库。所以它也没有 __migrationtables。数据库 2 是另一个数据库,它也准备好首先在其中初始化代码(如生产数据库),它也没有 __migration 表,我不知道如何初始化它,更新数据库不起作用, 既不添加迁移
-
@JSteward 我不确定我是否清楚我的问题,我有一个 dabatase,它首先没有代码就开始了,然后首先添加了带有空首字母的代码。现在,我想先用代码转换另一个数据库,我只是无法用我拥有的脚本来完成
标签: c# entity-framework-6 entity-framework-migrations