Если вы хотите обновить конкретный объект, тогда лучшим выбором может быть метод Refresh () .
Например:
Context.Refresh(RefreshMode.OverwriteCurrentValues, objectToRefresh);
Вы можететакже передайте массив объектов или IEnumerable в качестве 2-го аргумента, если вам нужно обновить более одного объекта одновременно.
Обновление
Я вижу, о чем вы говорите в комментариях,в отражателе вы видите, что это происходит внутри .Refresh ():
object objectByKey = context.Services.GetObjectByKey(trackedObject.Type, keyValues);
if (objectByKey == null)
{
throw Error.RefreshOfDeletedObject();
}
Метод, который вы связали, кажется вашим лучшим вариантом, класс DataContext не предоставляет другого способа очистки удаленной строки.Проверки удаления и тому подобное находятся внутри метода ClearCache()
... на самом деле это просто проверка на удаление и вызов ResetServices()
для CommonDataServices
внизу ... единственным плохим эффектом будет очистка любых ожидающих вставок, обновлений или удалений, которыеВы в очереди.
Есть еще один вариант, можете ли вы запустить другой DataContext для любой операции, которую вы делаете?Он не будет иметь кеша ... но это потребует некоторых вычислительных затрат, поэтому, если ожидающие вставки, обновления и удаления не являются проблемой, я бы придерживался подхода ClearCache()
.