Почему после добавления модульных тестов 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 ());