通过删除EF 4.3中的EdmMetadata表,似乎 DropCreateDatabaseIfModelChanges 不再有效。是吗?
OR
有没有办法像在EF 4.2的SEED方法中那样声明初始化程序?
答案 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/