В настоящее время я использую DI и IoC для управления некоторыми частями моего сайта.Я не знаю много об этом, но я пытался понять это с помощью.Я использую StructureMap
У моих контроллеров есть следующий Contructor
IDbContext _db;
public PagesController(IDbContext db)
{
_db = db;
}
Очевидно, что это не работает сразу, поэтому я создал следующую зависимость
x.For<IDbContext>().Use<ContextDb>();
Достаточно запутанно, я назвал приложение "Контекст" -> отсюда ContextDb
(не путайте его с DbContext
или IDbContext
)
Хорошо, теперь моя проблема.В файле Global.asax
я решил, что хочу DropCreateDatabaseIfModelChanges
, поэтому я пошел и добавил следующее:
DbDatabase.SetInitializer<IDbContext>(new DropCreateDatabaseIfModelChanges<IDbContext>));
Очевидно, что это не работает, IDbContext
- этоинтерфейс и правила зависимости решают, какая реализация используется.Таким образом, единственный способ выполнить эту работу - использовать следующее:
DbDatabase.SetInitializer<ContextDb>(new DropCreateDatabaseIfModelChanges<ContextDb>));
Однако, что-то вроде победы над целью внедрения этой зависимости?Как я мог решить это?