【发布时间】:2010-09-22 05:09:48
【问题描述】:
如果我从具有一个 DataContext 实例的表中选择多行。 然后我是否对行中的属性进行了一些更改,我可以只为选定的行之一提交对数据库的更改吗?
【问题讨论】:
标签: .net linq-to-sql .net-3.5
如果我从具有一个 DataContext 实例的表中选择多行。 然后我是否对行中的属性进行了一些更改,我可以只为选定的行之一提交对数据库的更改吗?
【问题讨论】:
标签: .net linq-to-sql .net-3.5
是的,你可以。
首先,您需要隔离要撤消更改的实体。 然后,您可以使用 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();
此代码仅考虑更新。您可能还需要考虑插入和删除中的更改。这取决于你。
【讨论】: