2012-07-13 35 views
0

我试图使用从UI发送的对象(即顺序)更新实体顺序。断开连接模式下的实体框架更新

我有我的方法

Order neworder = new Order 
     { 
      ID = order.ID, 
      FirstName = order.FirstName, 
      LastName = order.LastName, 
     }; 
     _bentities.Order.ApplyCurrentValues(neworder); 

     _bentities.SaveChanges(); 

,如果我填实体订单的所有非空的值这工作得很好以下。但是我只有很少的属性被修改。我只想更新这些修改后的属性(并非所有不可修改的非空值)

我该怎么办?

我读我可以将修改后的属性为:

var entry = _bentities.ObjectStateManager.GetObjectStateEntry(((IEntityWithKey)neworder).EntityKey); 
     entry.SetModifiedProperty("FirstName"); 
     entry.SetModifiedProperty("LastName"); 

然而,这并不出于某种原因。我得到一个异常,EntityKey不能为空。如何为neworder设置entitykey然后才能工作?

+0

你可能想看到这个职位的答案。 [请看这里](http://stackoverflow.com/questions/10257360/how-to-update-not-every-fields-of-an-object-using-entity-framework-and-entitysta) – 2012-07-13 12:36:44

回答

0

如果你想要更新和实体,你必须首先从数据库中获取它,然后调用ApplkyCurrentValues

order originalOrder = _bentities.Orders.FirstOrDefault(o => o.ID == updatedOrder.ID); 
_bentities.Orders.ApplyCurrentValues(updatedOrder);