Вы не должны полагаться на LINQ для внутреннего кэша SQL. LINQ to SQL был разработан для получения объектов из базы данных и отправки изменений обратно в базу данных. Он не предназначен, чтобы быть компонентом кэширования среднего уровня, хотя внутренне он имеет определенные поведения кэша.
( ссылка )
Зачем вам кэшированные объекты в этом случае? Вам нужна неизменная версия сущности? Вы обеспокоены производительностью?