首先,我已经阅读了这些问题/答案:
这些似乎都适用于 EF5 之前的 EF 版本,而我的情况似乎不适合这些答案。所以,让我描述一下我的情况。
- 我的应用程序最初是使用 EF4 创建的,模型优先。我用 GUI 设计器设计了我的数据库,并用它来生成我的数据库。
- 几个月来,我一直在运行并将数据收集到数据库中。我真的不能丢失这些数据。
- 我分支了我的代码,使用 NuGet 安装了 EF5,并使用 EF Power Tools 从我的数据库中生成我的模型,方法是右键单击一个新的类库项目,然后选择
Entity Framework | Reverse engineer code first
. - 我能够顺利地重新引用我的新项目,将我的项目转换为使用新的 DbContext 而不是 ObjectContext,并删除了保存旧模型的 EF4 类库。该程序运行良好!
现在,我想尝试自动迁移,我在 Ruby on Rails 中有一点经验。这是我所做的:
- 冉
Enable-Migrations
。由于连接字符串以及正在使用哪个 app.config 遇到了一些麻烦,但最终得到了它。但是,这个 MSDN 页面说这应该已经自动生成了第一个迁移,以使我达到我已经达到的目的。它没有。 - 跑去
Add-Migration InitialSchema
完成步骤 1 中没有自动完成的事情。这很有效。 - 向我的一个模型对象添加了一个属性,然后尝试运行
Add-Migration AddSerialToLogEntries
,并显示:
无法生成显式迁移,因为以下显式迁移处于挂起状态:[201307190100268_InitialSchema]。在尝试生成新的显式迁移之前应用挂起的显式迁移。
尝试在我现有的数据库上应用迁移失败,这并不奇怪。
我上面提到的其他答案基本上说我不走运,但就像我说的那样,那些是针对旧版本的实体框架的。我在这里有什么选择吗?
在写这个问题时,我想我可能可以使用 SQL Server Management Studio 将我的数据导出到 SQL 脚本,删除整个数据库,让 EF 创建它,然后运行脚本以恢复我的数据......我明天我有时间时会尝试,但我想知道是否还有其他选择,因为我不能 100% 确定这会起作用,并且不愿意在过程中插入的数据中出现任何错误。