Problemet var en inaktuell eller felaktig frågeplan för min fråga.
Jag löste problemet med att ta bort de befintliga frågeplanerna för den här frågan.
Tack till Vladimir Baranov för att du pekade på sommarskog.se/query-plan-mysteries.html. Tack också till tschmit007 och annemartijn.
Jag var tvungen att identifiera frågeplanerna för min fråga i databasen med hjälp av följande fråga:
SELECT qs.plan_handle, a.attrlist, est.dbid, text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) est
CROSS APPLY (SELECT epa.attribute + '=' + convert(nvarchar(127), epa.value) + ' '
FROM sys.dm_exec_plan_attributes(qs.plan_handle) epa
WHERE epa.is_cache_key = 1
ORDER BY epa.attribute
FOR XML PATH('')) AS a(attrlist)
WHERE est.text LIKE '%standardHourRate%' and est.text like '%q__7%'and est.text like '%Unit Overhead%'
AND est.text NOT LIKE '%sys.dm_exec_plan_attributes%'
Detta är en lätt modifierad version av frågan från Sommarskogs tidning. Observera att du måste lägga in din egen kod i liknande uttalanden för att hitta din fråga. Den här frågan svarar med attributlistan och planhandtaget för varje frågeplan för min fråga.
Jag försökte ta reda på vilken plan som kom från SSMS och vilken från EF, så jag tog bort dem alla med följande syntax:
dbcc freeproccache([your plan handle here])
Den nya planen som skapades för min EF-fråga fungerade perfekt. Tydligen tog EF-planen inte hänsyn till att jag nyligen hade uppdaterat statistik på databasen. Tyvärr vet jag inte hur man gör en sp_recompile för en EF-fråga.