2011-06-20 100 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

看到我的其他评论。如果不应保存这些更改,则不应更改跟踪的实体。 –