2015-05-11 50 views
0

我们有一个运行EF6的项目,现在已经激活迁移。我们遇到的问题是,我们需要在创建数据库时需要添加大量数据。这很好,直到我们需要在迁移部分添加数据,因此它成为SQL脚本的一部分。因为当我们在我们的开发机器上尝试创建新数据库时,迁移步骤在初始化器的种子方法和迁移步骤中的一些数据依赖于种子数据之前完成。实体框架6迁移:如何在数据库初始化时禁用自动更新数据库?

有没有一些方法可以在没有任何迁移的情况下获取初始数据库以及初始化程序的种子数据?或者我们需要将关键数据移至InitialCreate镜像Up方法吗?

生产数据库将无法在此阶段被清除,因此我们需要将所有新的生产数据添加到迁移步骤。


编辑:最后,我们刚搬到受影响的数据向上方法迁移,而不是我想要做到这一点,但我们在那里的时间短,这解决了这个问题。

回答

0

迁移还有一种Seed方法,您可以在Up()方法之后重写该方法。如果数据可能存在,您可以使用AddOrUpdate命令。 http://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part-3

+0

配置中的Seed方法仅在所有更新完成后运行。因此,如果我执行'Update-Database -TargetMigration:InitialCreate'并且没有数据库,那么数据库将被创建,但Seed方法不会被执行。 – SpaceOgre

+0

您是在谈论数据库初始值设定项中的Seed方法还是迁移中的种子方法?关于迁移种子方法的文档说:“Seed方法的目的是让您在Code First创建或更新数据库后插入或更新测试数据。创建数据库时以及每次数据库模式为数据模型更改后更新。“ –

+0

我正在谈论迁移中的种子方法。奇怪的是我已经阅读了你刚刚写的内容,但是在Seed方法中,这个注释是自动生成的:'//在迁移到最新版本后将调用此方法。 – SpaceOgre

相关问题