EF DbContexts несут разовые затраты на разрешение сопоставлений их сущностей.Для веб-приложений вы можете уменьшить это, запустив ваше приложение, запустив простой запрос к DbContext, который «запускает» эту разминку, а не во время вашего первого запроса, инициируемого пользователем.Простое обновление контекста не запускает инициализацию, а выполнение запроса.Таким образом, для ASP.Net MVC на Application_Start
, после инициализации всего:
using (var context = new MyContext())
{
var warmup = context.MyTable.Count(); // against a small table.
}
Вы можете проверить это поведение с помощью модульных тестов, имея набор временных тестов, которые читают данные из DbContext, и помещаяточка останова в событии DbContext OnModelCreating
.Он будет выполнен только один раз из первого теста с первым запросом.Вы можете добавить OneTimeSetUp
в настройку тестового оборудования, чтобы выполнить его перед тестами с приведенным выше примером быстрого подсчета, чтобы понести эти расходы до измерения производительности тестовых прогонов.