迁移失败后,DbMigrator回滚如何更改?

时间:2017-02-23 14:45:01

标签: entity-framework entity-framework-6

使用System.Data.Entity.Migrations.DbMigrator

我有代码优先迁移,我有意在Up()方法的末尾添加了一个错误。

Sql("SELECT * FROM DOES_NOT_EXIST"); // Simulate error in migration

现在调用Migrate()按预期抛出SqlException,但有趣的部分是我调查Sql Profiler时。

在分析器中,我可以看到查询,这是迁移的一部分(删除或添加列,修改数据等) 最后一个查询实际上是SELECT * FROM DOES_NOT_EXIST

为什么迁移中的所有这些先前查询似乎都没有效果?

几乎像某种交易被回滚了。但迁移并未在事务中运行......

完整Up()代码:

        public override void Up()
    {
        AddColumn("dbo.DummyEntities", "DifferentValue", c => c.String()); 
        DropColumn("dbo.DummyEntities", "Value");

        Sql(@"INSERT INTO [dbo].[DummyEntities]([DifferentValue]) VALUES ('MigratingToInvalid1')");
        Sql(@"INSERT INTO [dbo].[DummyEntities]([DifferentValue]) VALUES ('MigratingToInvalid2')");

        // Simulate invalid migration command, this will throw an exception
        Sql("SELECT * FROM DOES_NOT_EXIST");
    }

0 个答案:

没有答案