EF4 в настоящее время не имеет встроенного способа сделать это, если ef4 генерирует все ваши запросы.
Существуют способы обойти это, например, использование хранимых процедур или более расширенной модели встроенных запросов, однако, по меньшей мере, это может занять много времени.
Я считаю (и не говорю об этом от имени Microsoft), что кеширование - это предназначенное Microsoft решение для снижения нагрузки на сервер на сайтах EF4. Чтение незафиксированного (или nolock) встроенного в структуру создаст непредсказуемые проблемы для ожидаемого поведения EF4, когда два контекста выполняются одновременно. Это не означает, что вашей ситуации необходим такой уровень параллелизма.
Звучит так, как будто вас просили о нолоке на ВСЕХ избранных. Хотя я согласен с предыдущим постером, что это может быть опасно, если у вас есть ЛЮБЫЕ транзакции, которые должны быть транзакциями, я не согласен с тем, что автоматически делает DBA маппетом. Возможно, вы просто используете CMS, которая отлично подходит для грязного чтения. Вы можете изменить УРОВЕНЬ ИЗОЛЯЦИИ для всей вашей базы данных, что может иметь тот же эффект.
Администратор базы данных, возможно, порекомендовал nolock для операций, которые были выбраны ТОЛЬКО (что хорошо, особенно если есть неправильное ORM и выполнение некоторых хитрых дампов данных). Самое смешное в этом комментарии маппета - то, что Stack Overflow сам запускает SQL-сервер в режиме READ UNCOMMITTED. Угадайте, вам нужно найти что-то еще, чтобы получить ответы на ваши проблемы?
Поговорите со своим администратором базы данных о возможности установки этого уровня на уровне базы данных или рассмотрите стратегию кэширования, если она требуется только в нескольких местах. В конце концов, сеть не имеет состояния, поэтому параллелизм часто может быть иллюзией, если вы не обращаетесь к ней напрямую.
Информация об уровнях изоляции