0

我有一个带有 EntitySet 更改的 Linq-to-SQL 上下文。我想摆脱自上次调用以来对它所做的所有更改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什么?

4

1 回答 1

3

最好的办法?

using (DataContext dc = new DataContext)
{

}

这是唯一确定的方法。

第二个最佳选择是新建一个 EntitySet 并将其分配给属性 - 在 Designer.cs 文件中执行相同的方式。

于 2010-07-06T19:37:38.483 回答