Мой сайт 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")]
Мне удалось это понять. При смене конструктора для структуры структуры DBContext не удалось передать ему DbConnection.
Таким образом, у меня есть оба конструктора и добавлено немного логики в setup структуры структуры, которая сообщает, какой конструктор должен использовать веб-сайт.
c.For (). Использовать (). SelectConstructor (() => new PortalEntityModel ());