我正在尝试使用从UI发送的对象(即订单)更新实体订单。
我的方法
中有以下内容Order neworder = new Order
{
ID = order.ID,
FirstName = order.FirstName,
LastName = order.LastName,
};
_bentities.Order.ApplyCurrentValues(neworder);
_bentities.SaveChanges();
如果我填充实体Order的所有非可空值,则此工作正常。但是我只有很少的属性被修改。我只想更新这些修改后的属性(不是所有未修改的非可空值)
我该怎么做?
我已阅读我可以将修改后的属性设置为:
var entry = _bentities.ObjectStateManager.GetObjectStateEntry(((IEntityWithKey)neworder).EntityKey);
entry.SetModifiedProperty("FirstName");
entry.SetModifiedProperty("LastName");
然而,由于某些原因,这不起作用。我得到一个异常,EntityKey不能为null。如何为neworder设置entitykey,然后才能工作?
答案 0 :(得分:0)
如果您正在尝试更新和实体,则必须先从数据库中获取它,然后再调用ApplkyCurrentValues
。
order originalOrder = _bentities.Orders.FirstOrDefault(o => o.ID == updatedOrder.ID);
_bentities.Orders.ApplyCurrentValues(updatedOrder);