Linq-to-SQL на самом деле не был разработан для этого, контекст на самом деле должен иметь короткую продолжительность жизни, а не длинную. Если вы хотите кэшировать некоторые конкретные запросы, я бы рекомендовал использовать другой носитель, фактически не полагаясь на сам контекст.
Вот один из вариантов, чтобы понять, что я имею в виду: Кэширование результатов запросов LINQ
В качестве альтернативы, если есть несколько вещей, к которым вы просто обращаетесь без перерыва, которые редко меняются, рассмотрите просто кэширование List<T>
или другой формы результата и принудительное повторное кеширование при необходимости.