Хорошо, я борюсь с этим уже один день, и вот решение для тех, кто ищет ответ ...
Я предполагаю, что большинство людей, читающих этот пост, находятся здесь, потому что у них есть большой класс DbContext с большим количеством свойств DbSet <>, и загрузка занимает много времени. Вы, наверное, подумали, ну и дела, это имеет смысл, я должен разделить контекст, так как я не буду использовать все наборы dbsets одновременно, и я буду загружать только «Частичный» контекст, основываясь на ситуации, где мне нужно Это. Таким образом, вы разделили их, только чтобы узнать, что миграции Code First не поддерживают ваш способ революционного мышления.
Таким образом, ваш первый шаг должен был разделить контексты, затем вы добавили класс MigrationConfiguration для каждого из новых контекстов, вы добавили строки подключения, имена которых точно совпадают с вашими новыми классами Context.
Затем вы попытались запустить вновь разделенные контексты один за другим, выполнив Add-Migration Context1, затем выполнив Update-Database -Verbose ...
Казалось, все работает нормально, но затем вы замечаете, что каждая последующая миграция удаляла все таблицы из предыдущей миграции и оставляла таблицы только после самой последней миграции.
Это связано с тем, что текущая модель миграции ожидает использование одного DbContext на базу данных, и это должно быть зеркальное совпадение.
То, что я тоже попробовал, и кто-то предложил здесь сделать это, - создать один SuperContext, в котором есть все наборы Db. Создайте один класс Migration Configuration и запустите его. Оставьте свои частичные классы Context на месте и попытайтесь их создать и использовать. EF жалуется, что модель поддержки изменилась. Опять же, это связано с тем, что EF сравнивает ваш частичный dbcontext с сигнатурой контекста All-Sets, которая была оставлена после перенастройки супер-контекста.
Это главный недостаток, на мой взгляд.
В моем случае я решил, что ЭФФЕКТИВНОСТЬ важнее миграций. Итак, что я в итоге сделал, так это то, что после того, как я запустился в контексте Super и имел все таблицы на месте, я вошел в базу данных и вручную удалил таблицу _MigrationHistory.
Теперь я могу создавать и использовать мои частичные контексты без EF на это жаловаться. Он не находит таблицу MigrationHistory и просто движется дальше, что позволяет мне иметь «Частичное» представление базы данных.
Конечно, компромисс заключается в том, что любые изменения в модели нужно будет вручную распространять в базе данных, поэтому будьте осторожны.
Хотя у меня это сработало.