2011-07-11 269 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方法。如果你在控制器之外進行操作,那麼這是行不通的。