Есть несколько основных шагов, которые вы можете предпринять при оптимизации запроса Entity Framework.
Здесь вы можете найти список всех опций.
Те, которые япредложил бы в вашем случае:
- NoTracking.Вы только получаете сущность для получения значения.Не для его изменения, поэтому вам не нужно отслеживать изменения
- Предварительно скомпилируйте ваш запрос.Это простой шаг, и он действительно дает вам повышение производительности
- Возвращает правильный объем данных.Вы выбираете целую сущность только для того, чтобы получить ее значение свойства.Если вы выберете только свойство Value, то с SQL Server будет возвращено меньше данных (кстати, ваш код выдаст пустое исключение, если CmsOption не может быть найден из-за части First / Single -OrDefault. Если вы действительно знаете, чтохотя бы одна сущность удаляет часть OrDefault)
Если вы используете Visual Studio Premium, вы можете поместить этот код в модульный тест, а затем профилировать модульный тест.После каждого изменения вы можете сравнивать отчеты, чтобы убедиться, что вы улучшаете производительность.