У меня есть контекст Linq-to-SQL с изменениями в EntitySet. Я хочу избавиться от всех изменений, которые я сделал с ним, так как я последний раз вызывал SubmitChanges()
. Я использую следующий метод, чтобы восстановить состояние контекста:Возврат изменений в EntitySet <T> в Linq-to-SQL
public static void RevertChanges(this DataContext context)
{
var changeSet = context.GetChangeSet();
var inserts = changeSet.Inserts.ToList();
var deleteAndUpdate = changeSet.Deletes.Concat(changeSet.Updates).ToList();
foreach (var inserted in inserts)
{
var table = context.GetTable(inserted.GetType());
table.DeleteOnSubmit(inserted);
}
if (deleteAndUpdate.Count > 0)
{
context.Refresh(RefreshMode.OverwriteCurrentValues, deleteAndUpdate);
}
}
Это работает отлично, за исключением того, что EntitySet
на основе таблицы, не освежиться, и сохраняет изменения в нем.
Каков наилучший способ отклонить изменения в EntitySet
?
Ugh. Это сложно из-за использования DataContext. Я ищу способ избежать этого. – codekaizen
Эй, спасибо за второй вариант - это выглядит многообещающим. Как обновить объекты в EntitySet после его воссоздания? – codekaizen
Хорошо, я решил это, выпустив запрос по контексту и заполнив EntitySet вручную. – codekaizen