Как обновить кэш ObjectContext от дб?

Мы загружаем данные из дб:

var somethings = Context.SomethingSet.ToList();

Тогда кто-то удаляет или добавляет строки за пределами контекста. Контекст все еще имеет удаленный объект кэшей, потому что он не знает, что они были удалены. Даже если я называю Контекст. SomethingSet. ToList (), наш контекст все еще содержит удаленные объекты, и свойства навигации не корректны.

Что лучший метод должен обновить полный набор от базы данных?

15
задан LukLed 25 February 2010 в 03:06
поделиться

2 ответа

Метод Обновить - это то, что вам нужно:

Context.Refresh(RefreshMode.StoreWins, somethings);
19
ответ дан 1 December 2019 в 01:53
поделиться

Контекст данных EF является реализацией шаблона "Единица работы". Таким образом, он НЕ предназначен для хранения за пределами выполняемой работы. Как только ваша работа будет сделана, ожидается, что ваш контекст данных будет отброшен.

Это фундаментальное проектное решение для EF v1, EF v4 и LINQ to SQL. Если у вас нет очень специфических шаблонов использования данных и больших объемов памяти, вам следует избегать хранения контекстов данных дольше, чем это абсолютно необходимо для выполнения вашей единицы работы.

http://sdesmedt.wordpress.com/2009/02/18/unit-of-work-pattern/

http://takacsot.freeblog.hu/Files/martinfowler/unitOfWork.html

12
ответ дан 1 December 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: