将更改还原为Linq-to-SQL中的EntitySet <t> </t>

时间:2010-07-06 19:32:01

标签: linq-to-sql datacontext entityset

我有一个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 个答案:

答案 0 :(得分:3)

最好的方法?

using (DataContext dc = new DataContext)
{

}

这是确定的唯一方法。

第二个最佳选择是新建一个EntitySet并将其分配给属性 - 在designer.cs文件中也是如此。