Первый запрос, который вы выполняете для первого экземпляра DbContext, запускает статическую настройку для DbContext.Здесь все сопоставление разрешается, так что DbContext готов работать с DbSets и связанными объектами.Чем больше определений сущностей имеет дело с контекстом, тем дольше это может занять.
Я полагаю, что для мобильных приложений EF представляет собой потенциально непомерную стоимость доступа к данным, однако из общего опыта EF, чтобы избежать этого попадания, когда пользователь запускает свой первый реальный запрос, вы можете реализовать «разогрев» взапуск приложения:
using (var context = new Entities())
{
bool result = context.Users.Any();
}
Это гарантирует, что статическое определение контекста установлено и все последующие экземпляры контекста будут готовы к немедленному выполнению.Обратите внимание, что эта стоимость только для первого экземпляра DbContext, у вас нет этой стоимости с дополнительными экземплярами DbContext.Эти экземпляры должны быть недолговечными и ограничиваться блоком использования, чтобы гарантировать их удаление.Для мобильного приложения вы можете рассмотреть один более долгоживущий DbContext, но я бы с осторожностью выбирал отслеживаемые объекты (вместо этого используйте AsNoTracking () при загрузке объектов, которые вы не редактируете).Отслеживаемые объекты могут поглотить ограниченные ресурсы и потенциально вызвать проблемы с производительностью в будущем.