EntityFramework.Migrations, используя DbMigrator в классе C # - PullRequest
3 голосов
/ 11 октября 2011

Я только что установил новый пакет 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)

Я знаю, что миграции все еще в альфа-версии, но мне было интересно, смог ли кто-нибудь запустить миграцию с помощью DbMigrator?

Спасибо.

1 Ответ

1 голос
/ 11 октября 2011

Я только что нашел свою проблему, это потому, что я использовал EntityFrameworkProfiler и есть ошибка в последней версии EF, которая ломает профилировщик.

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

На данный момент мне не нужен профилировщик, поэтому я просто удалил строку кода, которая инициализировала профилировщик, и теперь он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...