Невозможно запустить тестовый проект с использованием Effort, если для DbContext определены пользовательские классы MigrationGenerator и EFConfiguration. - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть проект модульного тестирования, использующий EffortDb для проекта с EntityFramework6, использующий MySql в качестве базы данных и код первой миграции. При выполнении тестов в проекте есть исключение при создании экземпляра DbContext с использованием соединения Effort:

System.ArgumentException : The connection parameter must reference an object of type MySql.Data.MySqlConnection Parameter name: connection

Если я закомментирую классы для EfConfiguration и MigrationGenerator, проблема исчезнет и тестовый запуск в обычном режиме с помощью Effort.

Вопрос заключается в следующем: как создать проект с настраиваемыми классами генератора миграции для проекта с Mysql и запустить тестовую настройку без необходимости комментировать или код ниже для каждого использования? Мне кажется, что простой факт их определения вызывает проблему.

Это код для dbcontext:

public class Xxx : MySqlMigrationSqlGenerator
{
    protected override MigrationStatement Generate(DropForeignKeyOperation op)
    {
        var ret = base.Generate(op);
        ret.Sql = ret.Sql.Replace("dbo.", "");
        return ret;
    }
}

public class Mu : MySqlEFConfiguration
{
    public Mu() : base()
    {
        this.SetMigrationSqlGenerator("MySql.Data.MySqlClient", () => { return new Xxx(); });
    }
}

public class NivaDbContext : DbContext
{
//context content irrelevant
}
...