Мы загружаем данные из БД:
var somethings = Context.SomethingSet.ToList();
Затем кто-то удаляет или добавляет строки вне контекста. Из контекста все еще есть кеши удаленных объектов, потому что он не знает, что они были удалены. Даже если я вызываю Context.SomethingSet.ToList (), наш контекст все еще содержит удаленные объекты, и свойства навигации не верны.
Каков наилучший способ обновить весь набор из базы данных?
Контекст данных 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