EF迁移 - 直接进入最终模式

时间:2013-04-25 10:43:00

标签: entity-framework

我的架构经过多次迭代而发展。我有一组迁移将模式从空数据库转移到具有数十个表和分数列的模式。

在此过程中,有一些表,列和约束的添加,有时遵循(根据经验或新知识或规范的变化)通过删除或更改。有时表或列名称已被重复使用或重新使用。

现在,EF迁移似乎完全可以通过序列创建,更改,删除,再次创建,更改等来获取最新的模式,但感觉不对。在一个极端的情况下,可能会有数十个迁移创建表,然后是几十个删除表,直到最终的模式可能是一个或两个表(我不太可能)。从头开始到最终表的选项会让人感觉正确。

在我使用ActiveRecord迁移的Ruby时代,有一个选项可以只构建最终的模式,而不会逐步完成并可能撤消或重做工作。当然这意味着在每次迁移后保持模式的完整DDL版本是最新的,但不知何故它感觉更优雅。

有没有人与Entity Framework做过类似的事情?

2 个答案:

答案 0 :(得分:0)

您可能想尝试从数据库中删除__MigrationHistory表,删除Migrations文件夹(备份Configuration.cs文件),然后再次启用迁移。

答案 1 :(得分:0)

然后从这里开始为PM命令构建脚本

Generate full SQL script from EF 5 Code First Migrations

从代码中,ObjectContext上有一个选项,而不是直接在DbContext

 string script = (context as IObjectContextAdapter).ObjectContext.CreateDatabaseScript();

当然,如果你不需要看到魔法并改变生成的脚本,自动迁移就会起作用。

   Database.SetInitializer(new MigrateDatabaseToLatestVersion<YourDbContext,
                           YourMigrationConfiguration>()
   Context.Database.Initialize(true); 

如果它是一个EmptyDb架构,EF将免费提供。

  Context.Database.Initialize(true);