EF Code First Database Initializer和Migrations Confusion

时间:2016-07-05 04:47:08

标签: ef-code-first

我在Entity Framework 6.0上。这是一个发展问题,而不是生产。

我认为我的战略存在冲突。 目前,我有一个DropCreateDatabaseIfModelChanges 数据库初始化程序集,并在 Configuration.cs 中使用种子方法启用了迁移。 在添加迁移和运行更新数据库时,关于何时删除并重新创建数据库以及种子方法运行时,似乎是一个幸运的延迟。 事实上,无论什么时候发生,它都是一个完整的乐透,而且我必须采取各种各样的技巧来让事情发挥作用。 有人可以告诉我,如果同时启用了数据库初始化和迁移,那么是否存在冲突。 感谢

1 个答案:

答案 0 :(得分:3)

这不是一个合适的组合。有一个MigrateDatabaseToLatestVersion 初始化程序用于迁移。

在早期开发期间,您可能希望使用DropCreateDatabaseIfModelChanges初始值设定项(或CreateDatabaseIfNotExists)。初始化程序有一个特殊的Seed()方法,只有在创建数据库时才会运行。

一旦达到数据库中的内容很难重新开始的程度,您就可以切换到迁移。更改初始化程序并启用迁移。请务必添加initial baseline migrationadd-migration Initial -IgnoreChanges),这样您才能获得此后的更改。您现在可以添加每次更新数据库时运行的迁移种子,而不是初始化程序仅在创建数据库时运行的种子。

如果需要重新创建数据库,可以生成idempotent script来创建数据库并应用所有迁移。