2011-07-11 8 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); 
    } 

私はstackoverflowを検索し、以下のコードを見つけましたが、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メソッドを使用します。あなたがコントローラの外でそれをやっているなら、これはうまくいかないでしょう。

関連する問題