如果我使用一个DataContext实例从一个表中选择多行。 然后我会对行中的属性进行一些更改,是否可以仅针对所选行之一向数据库提交更改?
答案 0 :(得分:4)
是的,你可以。
首先,您需要隔离要撤消更改的实体。 然后,您可以使用DataContext类使用数据库中的值覆盖这些实体。
MyEntity e1, e2, e3 // changed entities
...
// keep the changes only for e3
List<MyEntity> undoList = new List<MyEntity>();
undoList.Add(e1);
undoList.Add(e2);
myDataContext.Refresh(RefreshMode.OverwriteCurrentValues, undoList);
myDataContext.SubmitChanges();
修改强>
您可以在DataContext中跟踪所有已更改的对象,如下所示:
MyEntity changedEntityToSubmit; // first you need to know what is the entity you need to submit.
List<object> allChangedEntities = new List<object>(myDataContext.GetChangeSet().Updates);
allChangedEntities.Remove(changedEntityToSubmit);
myDataContext.Refresh(RefreshMode.OverwriteCurrentValues, allChangedEntities);
myDataContext.SubmitChanges();
此代码仅考虑更新。您还可能需要考虑插入和删除中的更改。这取决于你。