我在 Entity Framework 6.0 上。这是一个开发问题,而不是生产问题。
我想我有一个相互矛盾的策略。
目前,我设置了 DropCreateDatabaseIfModelChanges 数据库初始值设定项,并使用 Configuration.cs 中的种子方法启用了迁移。
在添加迁移和运行更新数据库时,对于何时删除和重新创建数据库以及何时运行种子方法似乎是幸运的。
事实是,这两种情况何时发生完全靠抽奖,我必须想方设法使事情发挥作用。
有人能告诉我同时启用数据库初始化程序和迁移是否有冲突。
谢谢
请您参考如下方法:
这不是一个合适的组合。有一个MigrateDatabaseToLatestVersion 用于迁移的初始化程序。
在早期开发期间,您可能希望使用 DropCreateDatabaseIfModelChanges 初始值设定项(或 CreateDatabaseIfNotExists)。初始化程序有一个特殊的 Seed() 方法,该方法仅在创建数据库时运行。
一旦达到数据库中的内容很难重新播种的程度,您就可以切换到迁移。更改您的初始化程序并启用迁移。请务必添加 initial baseline migration ( add-migration Initial -IgnoreChanges ) 所以你只会在那个点之后得到更改。您现在可以添加每次更新数据库时运行的迁移种子,而不是仅在创建数据库时运行的初始化种子。
如果需要重新创建数据库,可以生成idempotent script这将创建数据库并应用所有迁移。




