Мое понимание структуры Entity Framework заключается в том, что если он сможет ответить на запрос из своего кеша, это произойдет. Моя простая проверка, однако, показывает, повторные запросы попали в базу данных, даже если они были ранее ответили положительно:Выполнение запросов Linq to Entities * всегда * попадание в базу данных?
var u1 = context.Users.SingleOrDefault(u => u.Id == 1);
var u2 = context.Users.SingleOrDefault(u => u.Id == 1);
Эти запросы являются успешными. Для каждого я вижу SELECT TOP (2)
в SQL Profiler.
Почему EF отправляется в базу данных для этого второго запроса?
Ну, это муха в мазе. Спасибо за информацию и ссылку на решение! – ladenedge
Это не совсем так. Я думаю, вы вводите в заблуждение EF и L2E. LINQ to Entities не использует кэширование по умолчанию, но EF * делает * кешировать материализованные экземпляры в своем контексте. Попробуйте, например, 'ObjectContext.GetObjectByKey' –
@Craig Stuntz i означает прозрачный кеш (например, то, что означало ladgedge). – Andrey