0
我有一個Linq-to-SQL上下文,其中包含EntitySet中的更改。我想擺脫自從我上次調用SubmitChanges()
以來對其所做的所有更改。我用下面的方法來恢復背景下的狀態:還原對實體集的更改<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
中的修改的最佳方法是什麼?
呃。由於DataContext的使用方式,這很困難。我正在尋找一種方法來避免這種情況。 – codekaizen 2010-07-06 19:40:30
嘿,感謝您的第二個選擇 - 它看起來很有前途。重新創建EntitySet後,如何刷新實體? – codekaizen 2010-07-06 20:38:56
好的,我通過在上下文中發出一個查詢並手動填充EntitySet來解決它。 – codekaizen 2010-07-06 20:56:12