EF Code First Database Initializer和Migrations Confusion

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF Code First Database Initializer和Migrations Confusion相关的知识,希望对你有一定的参考价值。

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

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

答案

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

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

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

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

以上是关于EF Code First Database Initializer和Migrations Confusion的主要内容,如果未能解决你的问题,请参考以下文章

EF Code First CREATE DATABASE 权限在数据库“主”中被拒绝

Entity Framework使用Code Frist/Model First 还是Database First?

Database-First,Model-First,Code-first

Database Initialization Strategies in Code-First:

我的Seed()方法永远不会在Code First EF 5中调用

EF Code First 数据迁移