Perhaps I am misunderstanding the caching that DbContext
and 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 DbSet
.
Using .Single
, .First
, .Where
, etc will not cache the results unless you are using second-level caching.