При работе с LinqToSql нередко приходится сталкиваться с тем, что даже после сохранения обновлённых данных в приложении по прежнему доступна их прежняя версия.
В этом случае при выполнении выборки данных следует произвести очистку кеша.
Операция очистки кеша выполняется при помощи метода Refresh контекста подключения к базе данных. В основном используются две его перегрузки. Обе они принимают два параметра.
Первый из них — режим обновления. Имеет тип System.Data.Linq.RefreshMode. Для обновления кеша нужно установить значение OverwriteCurrentValues;
Второй – объект сущности базы данных для которого требуется обновить кеш или набор таких объектов в формате IEnumerable.
Ниже приведён пример использования метода Refresh для набора объектов.
var services = _dc.Services.OrderBy(t => t.ServiseName); _dc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, services);
В результате набор services будет содержать только актуальную версию данных.
Для единичного объекта метод Refresh применяется аналогичным образом.