2008-11-13 39 views
2

如果我從一個表中選擇具有一個DataContext實例的多行。 然後在行中對屬性進行一些更改,是否可以將更改僅提交給所選行之一的數據庫?僅提交一個實體的更改

回答

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(); 

此代碼是隻考慮了更新。您還可能需要考慮插入和刪除中的更改。這取決於你。

+0

感謝您的回答,其確切答案我的問題。但實際上這種方法並不那麼有用,因爲如果我不知道使用DataContext跟蹤的所有實體,我不能保證只有指定的對象纔會被引用。 但你有+1點。 – TcKs 2008-11-14 07:46:40

相關問題