我有一个快速的问题。
假设上下文是我的 EF 上下文,而Respondent是 EF 从数据库生成的实际 EF 实体。
更新答辩人的最短方法是什么?
public void UpdateRespondent(Respondent respondent)
{
var resp = context.Respondents.First(r => r.RespondentId == respondent.RespondentId);
// Now... do I have to copy all properties from the respondent into resp ??
// But respondent is actually the Respondent entity
// Can I just replace it somehow?
context.SaveChanges();
}
谢谢一堆。
更新1
感谢 nrodic,这段代码就像一个魅力:
public void UpdateRespondent(Respondent changed)
{
var respondent = db.Respondents.FirstOrDefault(r => r.RespondentId == changed.RespondentId);
db.Respondents.ApplyCurrentValues(changed);
db.SaveChanges();
}
不过有一个问题 -看起来我根本不需要第一行“var respondent =”!
知道为什么在许多示例中存在这条线吗?
谢谢。
更新2
嗯,看来我需要第一行。否则它会在第二行引发异常 (db.Respondents.ApplyCurrentValues(changed);)
在 ObjectStateManager 中找不到具有与所提供对象的键匹配的键的对象。验证所提供对象的键值是否与必须应用更改的对象的键值匹配。