Возможно, я недопонимаю кэширование, что DbContext
и DbSet
делает, но у меня создалось впечатление, что есть некоторое кэширование, которое будет продолжаться. Я вижу поведение, которого я не ожидал бы при запуске следующего кода:
var ctx = CreateAContext();
var sampleEntityId = ctx.SampleEntities.Select(i => i.Id)
.Single(i => i == 3); //Calls DB as expected
var cachedEntityId = ctx.SampleEntities.Select(i => i.Id)
.Single(i => i == 3); //Calls DB unexpectedly
Что здесь происходит? Я думал, что часть того, что вы получаете от DbSet
, состоит в том, что сначала будет проверять локальный кеш, чтобы увидеть, существует ли этот объект перед запросом базы данных. Есть ли какой-то вариант конфигурации, который я здесь отсутствует?