【发布时间】:2015-06-26 21:05:16
【问题描述】:
我需要设置一个EntityObject 的EntityKey。我知道它的类型和它的 id 值。我不想不必要地查询数据库。
这行得通...
//
// POST: /Department/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Guid id, Department Model)
{
Model.EntityKey = (from Department d in db.Department
where d.Id == id
select d).FirstOrDefault().EntityKey;
db.ApplyPropertyChanges(Model.EntityKey.EntitySetName, Model);
db.SaveChanges();
return RedirectToAction("Index");
}
这失败了……
//
// POST: /Department/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Guid id, Department Model)
{
String EntitySetName = db.DefaultContainerName + "." + Model.GetType().Name;
Model.EntityKey = new System.Data.EntityKey(EntitySetName, "Id", Model.Id);
db.ApplyPropertyChanges(Model.EntityKey.EntitySetName, Model);
db.SaveChanges();
return RedirectToAction("Index");
}
ApplyPropertyChanges() 行因以下异常而失败:
ObjectStateManager 不 包含一个 ObjectStateEntry 和 引用类型的对象 'Sample.Models.Department'。
这两个 EntityKey 是相等的。为什么第二个代码块会失败?我该如何解决?
【问题讨论】:
标签: c# .net asp.net-mvc entity-framework