2013-11-02 1 views
4

Мое приложение использует EF5 с DbContext и около 100 классов сущностей. Инициализация первого экземпляра контекста занимает около 5 секунд и около 1 секунды для первого запроса. После создания предварительно скомпилированных запросов необходимое время сократилось до 4,5 секунд и 0,1 секунды.EF5 CodeFirst производительность запуска: создать модель edmx во время компиляции?

Итак, кажется, что поколение представлений особенно ускоряет первый запрос. Но первая инициализация контекста, по-видимому, приносит пользу только из-за прекомпилированных запросов.

В моем понимании EF создает модель EDMX из классов сущностей во время выполнения. Возможно, это вызывает задержку при запуске. Я хотел бы как можно больше перемещаться из стартового поколения для компиляции времени. Почему программа должна вычислять вещи одинаково при каждом запуске?

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

Когда я просматриваю таблицу миграции баз данных, в ней содержится закодированный и сжатый EDMX. Кажется, это будет сравниваться с текущим, чтобы определить изменения схемы. Чтобы архивировать это, EF должен генерировать EDMX при каждом запуске. Снова и снова ..... Этого я люблю кэшировать для ускорения.

Во время выполнения, когда приложение может доверять схеме базы данных, является текущим, Я думаю, что EF должен просто использовать эту базу данных, хранящуюся в EDMX, в любом случае?

ответ

0

Вы ищете предварительно скомпилированные представления (представление EDMX в .NET). Обычно эти представления генерируются во время выполнения, но вы можете использовать EF Power Tools, чтобы они были сгенерированы во время разработки в виде отдельного файла проекта и создавали их вместе с вашим проектом.

Таблица миграции содержит EDMX, но это не должно влиять на вашу производительность, если вы не выполняете миграцию.

+0

Я случайно назвал «предварительно скомпилированные представления» с «запрошенными запросами». Фактически я использую эту оптимизацию. Но он получил только около 20% преимущество. –

+0

Используете ли вы .NET 4.5? –

+0

Да, я использую .NET 4.5 –

Смежные вопросы