Почему после добавления модульных тестов Effort.EF6 я больше не могу запускать свой веб-сайт C# MVC?

Мой сайт C# MVC использует StructureMap для внедрения зависимостей.

Конструктор для моего DbContext был следующим.

public class PortalEntityModel : DbContext
{
    public PortalEntityModel() : base("name=PortalEntityModel")
    {
    }
}

Теперь я добавил Effort.EF6 для модульного тестирования, мне пришлось изменить конструктор DbContext на это.

public class PortalEntityModel : DbContext
{
    public PortalEntityModel(DbConnection connection) : base(connection, true)
    {
    }
}

Хотя теперь я могу тестировать мой код. Я больше не могу запустить веб-сайт, потому что StructureMap не может создать после изменения.

Экземпляр по умолчанию не зарегистрирован и не может быть автоматически определен для типа 'System.Data.Common.DbConnection'

Как я могу сказать StructureMap, как инициализировать мой DBContext, как раньше, при этом позволяя Effort.EF6 также работать?

РЕДАКТИРОВАТЬ --

StructureMap запускается при запуске сайта следующим образом...

    public static void Start()
    {
        IContainer container = IoC.Initialize();
        StructureMapDependencyScope = new StructureMapDependencyScope(container);
        DependencyResolver.SetResolver(StructureMapDependencyScope);
        DynamicModuleUtility.RegisterModule(typeof(StructureMapScopeModule));
    }

Запускается автоматически при запуске сайта

[assembly: PreApplicationStartMethod(typeof(StructuremapMvc), "Start")]
[assembly: ApplicationShutdownMethod(typeof(StructuremapMvc), "End")]

1 ответ

Мне удалось это выяснить. При изменении конструктора для структурной карты DBContext не удалось передать ему DbConnection.

Итак, теперь у меня есть оба конструктора и я добавил немного логики в настройку структуры карты, которая сообщает, какой конструктор должен использовать веб-сайт.

c.For (). Use (). SelectConstructor (() => new PortalEntityModel ());

Другие вопросы по тегам