Perhaps I am misunderstanding the caching that
DbSet does but I was under the impression that there was some caching that would go on. I'm seeing behavior that I wouldn't expect when I run the following code:
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
What's going on here? I thought that part of what you get from
DbSet is that it would first check the local cache to see if that object exists before querying the database. Is there just some sort of configuration option I am missing here?
What @emcas88 is trying to say is that EF will only check the cache when you use the
.Find method on
.Where, etc will not cache the results unless you are using second-level caching.
This is because the implementation of the extensor methods, use the Find method of the context
to verify first the cache. Hope it helps.