2
如果我從一個表中選擇具有一個DataContext實例的多行。 然後在行中對屬性進行一些更改,是否可以將更改僅提交給所選行之一的數據庫?僅提交一個實體的更改
如果我從一個表中選擇具有一個DataContext實例的多行。 然後在行中對屬性進行一些更改,是否可以將更改僅提交給所選行之一的數據庫?僅提交一個實體的更改
是的,你可以。
首先,您需要隔離要撤消更改的實體。 然後,您可以使用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();
此代碼是隻考慮了更新。您還可能需要考慮插入和刪除中的更改。這取決於你。
感謝您的回答,其確切答案我的問題。但實際上這種方法並不那麼有用,因爲如果我不知道使用DataContext跟蹤的所有實體,我不能保證只有指定的對象纔會被引用。 但你有+1點。 – TcKs 2008-11-14 07:46:40