0

我的架构经过多次迭代而演变。我有一组迁移,将架构从一个空数据库转移到一个包含几十个表和几十个列的数据库。

在此过程中,有几个表、列和约束的添加,有时(根据经验或新知识或规范中的更改)随后是删除或更改。有时,表或列名已被重新使用或重新调整用途。

现在,EF 迁移似乎完全能够通过创建、更改、删​​除、再次创建、更改等顺序运行,以获取最新的架构,但感觉不对。在极端情况下,可能会有几十个迁移创建表,然后是几十个删除表,直到最终模式可能是一个或两个表(我知道这不太可能)。从头开始到那些决赛桌的选择会感觉不错。

在我使用 ActiveRecord 迁移的 Ruby 日子里,有一个选项可以仅构建最终模式,而无需逐步执行,并且可能在此过程中撤消或重做工作。当然,这意味着在每次迁移后保持模式的完整 DDL 版本是最新的,但不知何故它感觉更优雅。

有没有人用实体框架做过类似的事情?

4

2 回答 2

0

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

从 EF 5 Code First 迁移生成完整的 SQL 脚本

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

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

当然,如果您不需要看到魔法并更改了生成的脚本,那么自动迁移将起作用。

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

如果它是 EmptyDb Schema,EF 将免费提供。

  Context.Database.Initialize(true); 
于 2013-04-25T14:58:15.783 回答
0

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

于 2013-04-25T10:46:30.207 回答