Entity Framework Core Медленная первая загрузка - PullRequest
0 голосов
/ 20 сентября 2018

Я имею дело с временем прогрева Entity Framework Core DbContext.У меня очень большой DbContext, и я регистрирую DbContexes с опцией AddDbContextPool (), которая регистрирует DbContext как синглтон, и приложение использует его.

в более ранней версии EF, чтобы ускорить время запуска вашего приложения послеприменяются обходные пути: использование Cached DbModelStore, генерация предварительно скомпилированных представлений и / или генерация предварительно скомпилированной версии структуры сущностей с использованием NGen, чтобы избежать джиттинга.

Однако я не вижу какого-либо действительного способа их применения наEntity Framework Core.Я даже не смог найти другого способа избежать начального времени запуска / запуска DbContext.

Время запуска нашего приложения составляет около 30+ секунд.

Я пытался инициализировать DbContextes при первом запуске моего приложения, однако этот тест кажется элегантным или доступным для событий решением.

существует запрос функции для скомпилированных представлений в группе Entity Framework Core (Github), однако для этой функции нет предельного срока.

Мне нужно знать, есть ли какое-нибудь решение и / или решение, которое я могу применить.

Спасибо

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Я столкнулся с трудностями во время прогрева dbContext, так как у нас есть один действительно большой dbContext, или, я бы сказал, имел.Чтобы решить эту проблему, теперь у нас есть несколько dbContexts для разных частей приложения.Настоятельно рекомендуется.

Затем используйте старое свойство аннотаций данных [NotMapped], чтобы закрыть ваши dbcontexts. DBContext медленно при первоначальном построении

0 голосов
/ 20 сентября 2018

Первый запуск медленный, потому что EF настраивает сопоставления таблиц.Самое важное, что вы можете сделать, - это перепроектировать ваш dbcontext.Вы должны разделить конфигурации на разные контексты.Один контекст должен содержать несколько сущностей, связанных по смыслу (как это сделано в DDD).Например, UserDbContext (для авторизации. Предоставляет пользователей, токены, personalData ...), CustomerDbContext (предоставляет все данные клиента: клиенты, контакты, контракты, предложения ...)

...