Класс данных Python от dict

Хорошо, я боролся с этим в течение дня, и вот решение для тех, кто ищет ответ ...

Я предполагаю, что большинство людей, читающих этот пост, здесь, потому что у них есть большой класс DbContext с большим количеством свойств DbSet & lt;> и для загрузки требуется много времени. Вы, наверное, подумали о себе, да, это имеет смысл, я должен разделить контекст, так как я не буду использовать все dbsets сразу, и я загружу только «частичный» контекст, основанный на ситуации, в которой мне нужно Это. Итак, вы разделили их, только чтобы узнать, что миграция кода First не поддерживает ваш путь революционного мышления.

Итак, ваш первый шаг должен был разделить контексты, а затем вы добавили класс MigrationConfiguration для в каждом из новых контекстов вы добавили строки подключения, названные так же, как и ваши новые классы контекста.

Затем вы попытались запустить вновь разделенные контексты один за другим, выполнив Add-Migration Context1, а затем обновив -Database -Verbose ...

Все, казалось, работает нормально, но затем вы заметили, что каждая последующая миграция удаляла все таблицы из предыдущей миграции и оставила таблицы только с последней миграции.

Это связано с тем, что текущая модель Migrations ожидает Single DbContext для каждой базы данных, и она должна быть зеркальным совпадением.

То, что я также пробовал, и кто-то предложил здесь сделать это, создать единственный SuperContext, в котором есть все Db. Создайте один класс конфигурации миграции и запустите его. Оставьте свои частичные классы контекста на месте и попробуйте создать и использовать их. EF жалуется, что модель Backing изменилась. Опять же, это связано с тем, что EF сравнивает ваш частичный dbcontext с сигнатурой контекста All-Sets, оставшейся от миграции Super Context.

Это, по моему мнению, главный недостаток.

В моем случае я решил, что PERFORMANCE важнее миграции. Итак, что я закончил делать, это после того, как я побежал в контексте Super и имел все таблицы на месте, я зашел в базу данных и вручную удалил таблицу _MigrationHistory.

Теперь я могу создавать и использовать свои частичные контексты без EF, жалующихся на это. Он не находит таблицу MigrationHistory и просто перемещается, что позволяет мне иметь «частичный» вид базы данных.

Конечно, компромисс заключается в том, что любые изменения в модели должны быть вручную распространенный в базе данных, поэтому будьте осторожны.

Это сработало для меня.

34
задан wim 27 November 2018 в 16:52
поделиться