EF entity.attach不起作用

时间:2012-04-30 05:02:13

标签: c# .net entity-framework sql-server-ce

我从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

对可能遗漏/错误的任何帮助?

3 个答案:

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

}