Нет, я знаю, что нет никакой возможности создать DbContext
без какой-либо информации о отображении. Специализированный контекст с предопределенными DbSets необходим для определения отображений и инициализации базы данных. Вероятно, вы можете использовать базовый DbContext, только если вы предоставляете информацию о отображении через его конструктор, передавая DbCompiledModel
, созданный вручную перед использованием DbContext
, но я еще не пробовал это.
Проблема в том, что DbSets и переопределенные OnModelCreating
используются для определения необходимого отображения. Если у вас нет DbSets или OnModelCreating
определено DbContext
, вы не сможете сделать вывод и кэшировать сопоставления. Метаданные сопоставления создаются и компилируются только один раз для каждого типа контекста (до перезапуска приложения). Эта операция считается очень медленной. Если у вас нет определенного типа контекста, EF, вероятно, не сможет определить отображение, и даже если это возможно, возможно, потребуется создать и скомпилировать метаданные для каждого экземпляра контекста (например, для анонимных типов).
Если вы используете DbCompiledModel
, созданный вручную, вы будете нести ответственность за его повторное использование.