这是我在SO中的第一个问题,尽管我已经提到了相当长一段时间的问题。
我最近正在为现有数据库执行代码优先迁移,以将其迁移到最新版本。我的数据库初始化程序使用默认策略“CreateDatabaseIfNotExists”,我正在使用SQL Server 2012 express。
以下是用于迁移的步骤: 1.使用较旧的数据库v1和相应的代码版本cv1启用迁移。使用-IgnoreChanges选项生成初始迁移脚本。使用此迁移更新了数据库。 2.使用最新的代码版本cv2,使用较旧的数据库v1。添加了迁移以生成架构更改和更新数据库的实际迁移脚本
这适用于现有数据库,并且已成功迁移到最新版本。
但对于新数据库,数据库已创建,但播种没有发生。在调试时,我注意到即使在创建DB模式之前,迁移脚本也会先执行。
迁移脚本失败,因为尚未添加正在迁移的表。
注意: 我已关闭AutomaticMigrationsEnabled进行迁移。
请注意,对于我正在使用的早期版本的EF-4.3,上述类似的方法工作正常。
这是App_Start中的代码:
Database.SetInitializer(new DBLayer.Models.MyDBInitializer()); 使用(MyDBContext db = new MyDBContext()) { db.Database.Initialize(假);
if (!db.Database.Exists())
{
((IObjectContextAdapter)db).ObjectContext.CreateDatabase();
}
//Initializing membership APIs
MembershipInitializer.InstallServices();
在上面的代码中,在db.Database.Initialize之后,迁移脚本正在执行,因为尚未添加表,因此会抛出错误。
在禁用迁移和创建新数据库时,情况再次正常。
我的问题是:
请指教。如果您需要更多信息,请与我们联系。