EntityFramework.Migrations,在C#类中使用DbMigrator

时间:2011-10-11 15:40:12

标签: c# .net sql-server entity-framework migration

我刚刚安装了新的EntityFramework.Migrations包。我按照本教程进行了迁移:http://blogs.msdn.com/b/adonet/archive/2011/09/21/code-first-migrations-alpha-3-no-magic-walkthrough.aspx

使用Powershell窗口,一切正常。

但是我们需要创建一个类来回滚我们的自动化测试的所有迁移。

所以我做了一个看起来像这样的简单类:

public class CustomMigrator
{
    public void DropDatabase()
    {
        new DbMigrator(new Settings()).Update("0");
    }

    public void RegenerateDatabase()
    {
        new DbMigrator(new Settings()).Update();
    }
}

设置是我的DbMigrationContext实现,如下所示:

public class Settings : DbMigrationContext<MyDb>
{
    public Settings()
    {
        AutomaticMigrationsEnabled = false;
        SetCodeGenerator<CSharpMigrationCodeGenerator>();
        AddSqlGenerator<SqlConnection, SqlServerMigrationSqlGenerator>();
    }
}

当我这样称呼时:

new CustomMigrator().DropDatabase();

我得到一个奇怪的例外:

The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)

我知道迁移仍然是alpha版,但我想知道是否有人能够使用DbMigrator运行迁移?

感谢。

1 个答案:

答案 0 :(得分:1)

我刚刚发现了我的问题,这是因为我使用的是EntityFrameworkProfiler,最新的EF版本存在一个错误,它打破了分析器。

http://blogs.hibernatingrhinos.com/5121/entity-framework-june-2011-ctp-v4-2-is-now-supported-in-entity-framework-profiler

目前我不需要探查器,所以我只删除了初始化探查器的代码行,现在它可以工作。