Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 6 实体框架6迁移:如何在数据库初始化时禁用自动更新数据库?_Entity Framework 6_Entity Framework Migrations - Fatal编程技术网

Entity framework 6 实体框架6迁移:如何在数据库初始化时禁用自动更新数据库?

Entity framework 6 实体框架6迁移:如何在数据库初始化时禁用自动更新数据库?,entity-framework-6,entity-framework-migrations,Entity Framework 6,Entity Framework Migrations,我们有一个运行EF6的项目,现在已经启动了迁移。我们的问题是,在创建数据库时,需要将大量数据添加到数据库中。在我们需要在迁移部分添加数据之前,这种方法一直很有效,因此它是SQL脚本的一部分。因为当我们尝试在开发机器上创建一个新数据库时,迁移步骤是在初始值设定项的种子方法之前完成的,迁移步骤中的一些数据依赖于该种子数据 有没有办法只获取初始数据库,而不进行任何迁移,再加上初始值设定项的种子数据?或者我们需要将关键数据移动到InitialCreate mirgations Up方法吗 生产数据库在此

我们有一个运行EF6的项目,现在已经启动了迁移。我们的问题是,在创建数据库时,需要将大量数据添加到数据库中。在我们需要在迁移部分添加数据之前,这种方法一直很有效,因此它是SQL脚本的一部分。因为当我们尝试在开发机器上创建一个新数据库时,迁移步骤是在初始值设定项的种子方法之前完成的,迁移步骤中的一些数据依赖于该种子数据

有没有办法只获取初始数据库,而不进行任何迁移,再加上初始值设定项的种子数据?或者我们需要将关键数据移动到InitialCreate mirgations Up方法吗

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



编辑:最后,我们只是在迁移中将受影响的数据移动到Up方法,这不是我想要的方式,而是我们缩短了时间,这解决了问题。

迁移还有一个种子方法,您可以覆盖在Up()方法之后发生的方法。如果数据可能存在,可以使用AddOrUpdate命令

配置中的Seed方法仅在所有更新完成后运行。因此,如果我在不存在数据库的情况下执行
更新数据库-TargetMigration:InitialCreate
,则将创建数据库,但不会执行Seed方法。您是在谈论数据库初始值设定项中的Seed方法还是迁移中的Seed方法?关于迁移种子方法的文档说:“种子方法的目的是使您能够在代码首次创建或更新数据库后插入或更新测试数据。在创建数据库时以及每次数据模型更改后更新数据库架构时,都会调用该方法。”我正在讨论迁移中的种子方法。奇怪的是,我也读了您刚才写的内容,但在Seed方法中,此注释是自动生成的:
//迁移到最新版本后将调用此方法。
Seed()每次更新数据库时,迁移文件夹下configuration.cs中的方法都应该运行,即使模型没有更改。只是在我这边试过了。只有当我把数据库更新到最新版本时,我才会觉得很奇怪。我们有不同的版本吗?因为我们使用不同的命令进行更新。根据NuGet,我使用的是EF 6.1.2