У меня есть этот EF запрос: (только сохранил основную часть)Entity Framework запрос отсутствует отфильтрованный индекс на SQL Server 2012
int maxRetryCount = 5;
var erroredArchiveFilesQuery =
transitionLogSessionContext.Set<ArchivedFile>().Where(f =>
f.RetryCount < maxRetryCount
).Take(maxBatchSize);
Он пропускает фильтрованный индекс отсутствует.
В то время как при удалении переменной maxRetryCount
как таковой
var erroredArchiveFilesQuery =
transitionLogSessionContext.Set<ArchivedFile>().Where(f =>
f.RetryCount < 5 &&
).Take(maxBatchSize);
будет использовать фильтрованную индекс.
Действительное SQL с первого запроса EF ...
SELECT TOP (500)
[Extent1].[Id] AS [Id],
..
FROM
[ArchivedFile] AS [Extent1]
WHERE
([Extent1].[RetryCount] < @p__linq__0)
Отфильтрованный индекс содержит столбец RetryCount
и фильтр «RetryCount < 5»
Как я могу сделать запрос эф с переменная, которая попадет в отфильтрованный индекс?
Я предполагаю, что проблема заключается в подготовке EF, поэтому его можно использовать повторно, и это смущает SQL Server.
вы должны уточнить свой код. Ваш код недействителен (не компилируется). Также убедитесь, что вы пометили все разделы кода как код. – Mat
У меня были проблемы с получением кода среднего кода, показанного как код, но переписывание его помогло. Я не собирался компилировать код, но, надеюсь, все основные части есть. Если проблема не имеет смысла сейчас, просто дайте мне знать, где я должен очистить. Спасибо –
. Где (f => f.RetryCount <5 &&) Что должен делать этот кусок кода? – Mat