我从db中检索了一个实体,如下所示
using ( var ctx = new Mycontext() )
return ctx.MyGroups.First( // query );
这绑定到UI并更新用户保存操作,如下所示
using ( var ctx = new Mycontext() )
{
ctx.MyGroups.Attach(o); // verified object o is updated
ctx.SaveChanges();
}
然而,数据库未更新
环境是.net 4.0,db是sql compact 4
对可能遗漏/错误的任何帮助?
答案 0 :(得分:11)
当您将对象附加到上下文时,其默认状态为“未更改”,您应该通过设置DBContext.Entry(entity).State = EntityState.Modified;
来强制进行更新,并且仅在该调用之后DBContext.SaveChanges();
答案 1 :(得分:0)
Attach
方法依赖主键将实体附加到对象上下文。在我看来,当你的对象从视图和模型绑定更改时,更新的对象中缺少主键值。
答案 2 :(得分:0)
根据Ciobanu Ion的建议,这是您的解决方案:
using ( var ctx = new Mycontext() )
{
ctx.MyGroups.Attach(o); // verified object o is updated
ctx.ObjectStateManager.ChangeObjectState(o, EntityState.Modified);
ctx.SaveChanges();
}