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?此外,您可以在此处阅读相关内容: