EF代码优先:迁移在不同代码版本上初始化的数据库

时间:2012-06-26 16:59:06

标签: entity-framework

我正在使用Entity Framework 5 RC,代码优先。我正在努力迁移在不同版本的代码上创建的数据库。例如,当表FooBar不存在时,创建了数据库A.在将表FooBar添加到我的模型之后创建了数据库B.

我编写了一个添加FooBar表的迁移。在调用CreateTable之前,我是否有责任在FooBar迁移中检查表不存在?似乎是这种情况,因为数据库B没有FooBar迁移的条目,并将尝试运行它。

首先,MigrationHistory表似乎可以省去添加这些检查,但由于新数据库在创建数据库之前没有添加迁移条目,我仍然需要自己进行检查。这是正确的方法还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

为了解决我在添加存储过程时遇到的问题,我编写了一个TSQL脚本来创建一个新表“_ PreviousMigrationHistory” - 它在我存储后从“ _MigrationHistory”表中接收新条目程序脚本已运行...

我确实在两个表中添加了一个新列(“VersionId”,INT - IDENTITY(1,1)),这是我在代码中用来进行比较的。

这样,即使发生了代码优先迁移,您也可以使用未更新的迁移模式(__PreviousMigrationHistory)。

这会有帮助吗?

**编辑 - 抱歉,我想念这个问题。 - 虽然我认为数据库的新实例仍然会通过迁移步骤,而这又应该将条目添加到__MigrationHistory表中?