Возврат изменений в EntitySet <T>в Linq-to-SQL - PullRequest
0 голосов
/ 06 июля 2010

У меня есть контекст Linq-to-SQL с изменениями в EntitySet.Я хочу избавиться от всех изменений, которые я внес в него с тех пор, как последний раз звонил SubmitChanges().Я использую следующий метод для восстановления состояния контекста:

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?

1 Ответ

3 голосов
/ 06 июля 2010

Лучший способ?

using (DataContext dc = new DataContext)
{

}

Это единственный способ быть уверенным.

Второй лучший вариант - создать EntitySet и присвоить его свойству - таким же образомделается в файле designer.cs.

...