Предварительная компиляция (создание сопоставления?) EF DbContext для более быстрой отладки

Требуется некоторое время (3 минуты +), чтобы «создать/скомпилировать» мой DbContext. Веб-сервер запускается примерно через 5 секунд, но когда я делаю первый запрос к своей базе данных, Entity Framework должен «построить/создать/скомпилировать» базу данных в памяти или что-то в этом роде, я думаю? Следующие запросы почти мгновенные. Это было первое создание базы данных DbContext, база данных уже существует в MSSQL и содержит данные. DbContext содержит около 500 DbSet с отношениями.

Есть ли способ ускорить это, выполнив «создание (сопоставление?)» DbContext моей Entity Framework перед запуском веб-сервера, создайте файл/сопоставления, которые ему нужны, поэтому первый запрос тоже быстрый?

РЕДАКТИРОВАТЬ1:

Я пробовал Power Tools, но они выдают ошибку, что у DbContext нет конструктора, который можно использовать, а у него есть обычный конструктор.

public DbContext() : base() {}

Любые другие вещи, которые я мог бы попробовать?


person Appsum Solutions    schedule 14.01.2016    source источник
comment
Какую версию EF вы используете?   -  person natemcmaster    schedule 01.02.2016


Ответы (1)


В документации Entity Framework описано, как создавать представления с помощью EF Power Tool здесь.

После установки EF Power Tools вам необходимо:

  1. Щелкните правой кнопкой мыши класс, содержащий ваш DbContext, или файл .edmx.
  2. Выберите «Создать представления».

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

Но будет ли это работать для EF7, кто знает...

person Thomas Boby    schedule 14.01.2016
comment
Я именно поэтому и спрашиваю, я использую EF7 RC1. Я уже прочитал эту часть документации, прежде чем задать вопрос. Кроме того, поскольку я работаю на «Предприятии» в соответствии с лицензией VS, я использую VS Express, а это значит, что я не могу устанавливать какие-либо расширения... - person Appsum Solutions; 14.01.2016
comment
Тогда, похоже, вам придется использовать ручной метод, указанный на этой странице, который, по-видимому, все еще работает? Честно говоря, я сомневаюсь, что кто-то сделал собственное решение этой проблемы, когда расширение существует для подавляющего большинства людей :( - person Thomas Boby; 14.01.2016