У меня был блокпост, который каскадно опустился до ситуации, описанной ниже. Я не очень помог людям, отвечающим на мои предыдущие вопросы (я думаю, что мне нужно научиться лучше их формулировать), но я надеюсь, что кто-то хотя бы сможет объяснить мне это (я новичок в LINQ и не имел возможность еще читать в любой большой длине).
Я использую модель репозитория для доступа к данным через LINQ-to-SQL. Я пытаюсь использовать 1 контекст данных, объявленный как общедоступный статический, поэтому я всегда использую один и тот же контекст.
Проблема 1: веб-страницы загружались с кэшированными значениями сразу после сохранения изменений. Изменения были переданы в базу данных, но текст данных выплевывал кэшированную копию объекта.
Обходной путь : установите ObjectTrackingEnabled = false
в текстовом данных.
Проблема 2: Теперь объекты не могут выполнять отложенную загрузку - все объекты в данном объекте являются нулевыми, когда я проверяю их во время отладки.
Обходной путь: Установить DeferredLoadingEnabled = false
для текста данных.
Проблема 3: LINQ не устанавливает автоматическую загрузку для всех объектов, связанных с данным объектом.
Обходной путь: Явно сконфигурируйте LoadOptions для текста данных и вручную идентифицируйте каждый связанный объект, установив LoadWith<Object>(o => o.entity1)
, LoadWith<Object>(o => o.entity2)
, ..., LoadWith<Object>(o => o.entityN)
.
Может ли кто-нибудь помочь мне преодолеть проблему с кэшированием, не имея дело с остальными?
Если нет, может кто-нибудь сказать мне, есть ли другой способ установить ImmediateLoadingEnabled (или что-то в этом роде) в контексте данных, чтобы мне не приходилось явно указывать параметры загрузки для всех сущностей связано с всеми объектами в моем домене?
Буду очень признателен за отзыв. Если я задаю вопросы без достаточного количества информации или если вы хотите привести пример, пожалуйста, дайте мне знать!
Заранее спасибо!