Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在实体框架中更新实体_C#_Asp.net_Asp.net Mvc_Entity Framework 4 - Fatal编程技术网

C# 在实体框架中更新实体

C# 在实体框架中更新实体,c#,asp.net,asp.net-mvc,entity-framework-4,C#,Asp.net,Asp.net Mvc,Entity Framework 4,我有一个与其他实体相关的实体(终端认证)。 我想让用户能够更新终端认证,但我无法更新由用户更新的相关对象。我的更新代码如下: public void UpdateTerminalCertification(TerminalCertification terminalCertification) { var lastCertification = db.terminalCertifications.Find(terminalCertification.TerminalCertificati

我有一个与其他实体相关的实体(
终端认证
)。 我想让用户能够更新
终端认证
,但我无法更新由用户更新的相关对象。我的更新代码如下:

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();

我该怎么办?

您可以将DbContext强制转换为具有基础ObjectContext的IOObjectContextAdapter,然后使用ObjectStateManager关闭该适配器。

在控制器内使用UpdateModel或方法。如果您在控制器外部执行此操作,则此操作将不起作用。

它会引发此错误:ObjectStateManager不包含引用类型为的对象的ObjectStateEntry…请先将实体附加到DbContext。如何将我的对象附加到DbContext?此外,您可以在此处阅读相关内容: