实体框架在断开连接模式下更新

时间:2012-07-13 09:47:40

标签: entity-framework

我正在尝试使用从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,然后才能工作?

1 个答案:

答案 0 :(得分:0)

如果您正在尝试更新和实体,则必须先从数据库中获取它,然后再调用ApplkyCurrentValues

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