EF Code First Database Initializer和Migrations Confusion

Sha*_*unK 6 ef-code-first

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

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

Ste*_*ene 5

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

在早期开发期间,您可能需要使用DropCreateDatabaseIfModelChanges初始化程序(或CreateDatabaseIfNotExists)。对于初始化程序,有一个特殊的Seed()方法仅在创建数据库时运行。

一旦达到需要重新设置数据库内容的位置,就可以切换到迁移。更改您的初始化程序并启用迁移。请确保添加初始基准迁移add-migration Initial -IgnoreChanges),这样您才能在此之后获得更改。现在,您可以添加每次在更新数据库时运行的迁移种子,而不是仅在创建数据库时才运行的初始化种子。

如果需要重新创建数据库,则可以生成一个幂等脚本,该脚本将创建数据库并应用所有迁移。