更新实体框架中的实体

时间:2011-07-11 19:54:03

标签: c# asp.net asp.net-mvc entity-framework-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();

我该怎么办?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

在控制器中使用UpdateModel或TryUpdateModel方法。如果你在控制器之外这样做,那么这将不起作用。