2011-06-20 96 views
1

可以說我有這樣的:實體框架4 Partialy的SaveChanges

var entity = db.histories.GetWhere(x => x.Body == "MyBody").FirstOrDefault(); 
var entity2 = db.histories.GetWhere(x => x.Body == "MyBody2").FirstOrDefault(); 
     entity.From = "lmao!"; 
     entity2.From = "lmao2!"; 

現在我知道,更新我要打電話db.SaveChanges();

我的問題是什麼,如果我想更新實體,而不是ENTITY2 ?

是甚至可能的?可能很簡單,我不確定。

在此先感謝。

+0

您必須分離或克隆entity2。這可能會解決這個問題的設計問題。 –

+1

上下文是工作單元=將其用作工作單元。一旦你修改了附件,它將被保存。不要修改您不想保存的附加項目。 –

回答

2

無論是從獨立的環境中得到2個實體:

var entity = db.histories.GetWhere(x => x.Body == "MyBody").FirstOrDefault(); 
var entity2 = differentDbInstance.histories.GetWhere(x => x.Body == "MyBody2").FirstOrDefault();   

或來自同一上下文檢索,但做之前卸下你不想保存

db.Detach(entity2); 
entity2.From = "lmao2!"; 

後者是更好的設計,但你可以改變需要取決於場景的前者

+0

只要知道分離一個實體將其對象圖拆分(刪除所有附加的子對象和集合),以便在分離後引用這些子對象將導致一個新的從數據庫中讀取。 –

3

這已被問及之前,沒有,沒有辦法做到這一點。

entityentity2必須位於不同的數據上下文才能實現您要查找的內容。

+0

讓我們高興。 –

+0

@亨克霍爾特曼,我不明白你的意思是說我們不能這樣做更好,但是如果你的意思是,你能解釋爲什麼它更好嗎? – Stacker

+0

看到我的其他評論。如果不應保存這些更改,則不應更改跟蹤的實體。 –