У меня есть веб-приложение, которое должно быть составлено из серии плагинов в базовую инфраструктуру. Плагин - это скомпилированная DLL CLR + некоторые файлы содержимого, которые будут помещены в определенное место. Я использую Autofac для сканирования и регистрации типов из сборки, а также для причудливой маршрутизации для обслуживания контроллеров и активов. Но, поскольку каждая сборка плагина может содержать DbContext (по соглашению каждый будет использовать свою собственную базу данных), я не могу понять, что там делать.
Теперь я нашел много вещей о том, как использовать несколько контекстов, но все это требует знания того, что они будут во время разработки. Мое приложение не знает, какие контексты будут использоваться до выполнения.
То, что я ищу в идеале, - это какой-то способ сделать
ApplyMigrations<MyDbContext, MyDbConfiguration>();
Хотя я также должен был бы предоставить упорядоченный набор миграций для применения (при использовании явных миграций).
Где я сейчас спотыкаюсь, это стандартный
Database.SetInitializer(...)
так как это статический singleton, и каждый dbcontext в моей системе имеет свой собственный инициализатор.