在EF 4.3中DropCreateDatabaseIfModelChanges发生了什么?

时间:2012-04-09 11:21:57

标签: entity-framework code-first

通过删除EF 4.3中的EdmMetadata表,似乎 DropCreateDatabaseIfModelChanges 不再有效。是吗?

OR

有没有办法像在EF 4.2的SEED方法中那样声明初始化程序?

1 个答案:

答案 0 :(得分:3)

EdmMetadata在EF 4.3 Code First模型中已废弃,而是使用_MigrationHistory表来检查模型和数据库之间的兼容性。

(请注意,如果可能,_MigrationHistory表将成为系统表。这意味着要查看它,您可能需要扩展SQL Management Studio中的“系统表”或首选工具。)

在EF 4.3中,当DbContext与Code First方法一起使用时,Database.Create会尝试使用Code First Migrations来创建数据库并执行DDL。 Database.Create为您执行初始自动迁移。作为此过程的一部分,迁移将创建一个名为_MigrationHistory的表,并在此表中插入一行,其中包含Code First模型的压缩版本。 DropCreateDatabaseIfModelChanges 初始化程序使用Database.CompatibleWithModel方法通过检查 _MigrationHistory 表来确定Code First模型是否与用于创建数据库的模型匹配。

http://blog.oneunicorn.com/2012/01/13/ef-4-3-beta-1-what-happened-to-that-edmmetadata-table/