Entity Framework 4: Как обеспечить порядок предложения WHERE в сгенерированном запросе - PullRequest
4 голосов
/ 19 января 2011

Предположим, что следующая таблица MyObjects:

Id (PK, int)
DecimalField (decimal)
TextField (nvarchar)

Я добавил дополнительный индекс для DecimalField.

Рассмотрим следующий запрос LINQ to Entities для получения объекта:

db.MyObjects.FirstOrDefault(r => r.DecimalField == localValue1 && r.TextField == localValue2)

Из-за индекса важно, чтобы сгенерированный EF запрос сохранял порядок свойств в предложении WHERE (т. Е. DecimalField first и TextField second), иначе таблицасканирование произойдет, и индекс бесполезен.Как я могу заставить EF соблюдать определенный порядок в предложении WHERE?И есть ли разница между специальными и скомпилированными запросами?

1 Ответ

6 голосов
/ 19 января 2011

Нет, порядок предикатов предложения where не имеет значения. SQL Server будет использовать соответствующий индекс, если он есть, даже если в предложении where столбцы указаны в другом порядке, чем в индексе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...