2011-07-11 229 views
4

我有一个实体(TerminalCertification),它与其他实体有关系。 我想让用户能够更新TerminalCertification,但我无法更新用户更新的相关对象。我更新的代码是在这里:更新实体框架中的实体

public void UpdateTerminalCertification(TerminalCertification terminalCertification) 
{ 
    var lastCertification = db.terminalCertifications.Find(terminalCertification.TerminalCertificationID); 

    if (lastCertification==null) 
     throw new TerminalCertificationNotFoundException(terminalCertification)         
     db.Entry(lastCertification).CurrentValues.SetValues(terminalCertification); 
    } 

我已搜查计算器和下面的代码中发现但没有在的DbContext类等ObjectStateManager。

ObjectStateManager stateMgr = db.ObjectStateManager;  
ObjectStateEntry stateEntry = stateMgr.GetObjectStateEntry(model); 
stateEntry.SetModified(); 

我该怎么办?

回答

4

您可以将您的DbContext强制转换为具有基础ObjectContext的IObjectContextAdapter,然后使用ObjectStateManager关闭它。

+0

它引发此错误:ObjectStateManager不包含带有对类型为...的对象的引用的ObjectStateEntry – JGC

+0

首先将实体附加到DbContext。 – Jeff

+0

如何将我的对象附加到DBContext? – JGC

0

在控制器内部使用UpdateModel或TryUpdateModel方法。如果你在控制器之外进行操作,那么这是行不通的。