我正在研究代码优先迁移,我正在尝试使用基于代码的迁移(Automatedmigration=false)。我现在能做的是:
-运行启用迁移
-添加迁移初始
- 使用“更新数据库”运行迁移(创建迁移历史表)
- 更改我的模型
- 执行添加迁移“changesInMyModel”
现在我想做的是能够自动运行我所有的迁移。使用类似的东西:
[Test]
public void UpdateDataModel()
{
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyContext, MyConfiguration>());
var dc = new MyContext();
dc.Database.Initialize(true);
}
执行测试并转到数据库后,我看不到任何更改。我能做些什么?欢迎提出建议!
更新:Myconfiguration 类使用 Automatedmigration=false。
MyConfiguration 类是公共的并且在其父项目之外可见。
我没有在 app.config 中使用任何配置,因为我使用的是源代码中的 Database.SetInitializer。
在运行我的测试之前创建了 MigrationHistory
从包管理器控制台运行更新数据库,迁移运行良好。
更新:我正在运行以下示例的修改版本(使用基于代码的迁移):http: //msdn.microsoft.com/en-us/data/jj591621.aspx,但问题仍然存在。- 启用迁移 - 添加迁移 - 尝试 SetInitializer 和 Initialize 但没有任何反应。
更新:-当 Automatedmigration=true 时,SetInitializer 和 Initialize 工作正常,模型中的更改与数据库同步。- 使用下面的代码有效。
new DbMigrator(new Configuration()).Update(); What should be the difference?