我正在使用Entity Framework 5 RC,代码优先。我正在努力迁移在不同版本的代码上创建的数据库。例如,当表FooBar不存在时,创建了数据库A.在将表FooBar添加到我的模型之后创建了数据库B.
我编写了一个添加FooBar表的迁移。在调用CreateTable之前,我是否有责任在FooBar迁移中检查表不存在?似乎是这种情况,因为数据库B没有FooBar迁移的条目,并将尝试运行它。
首先,MigrationHistory表似乎可以省去添加这些检查,但由于新数据库在创建数据库之前没有添加迁移条目,我仍然需要自己进行检查。这是正确的方法还是我错过了什么?
答案 0 :(得分:0)
为了解决我在添加存储过程时遇到的问题,我编写了一个TSQL脚本来创建一个新表“_ PreviousMigrationHistory” - 它在我存储后从“ _MigrationHistory”表中接收新条目程序脚本已运行...
我确实在两个表中添加了一个新列(“VersionId”,INT - IDENTITY(1,1)),这是我在代码中用来进行比较的。
这样,即使发生了代码优先迁移,您也可以使用未更新的迁移模式(__PreviousMigrationHistory)。
这会有帮助吗?
**编辑 - 抱歉,我想念这个问题。 - 虽然我认为数据库的新实例仍然会通过迁移步骤,而这又应该将条目添加到__MigrationHistory表中?