0

我正在尝试使用从 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 不能为空。如何为 neworder 设置 entitykey,然后这会起作用吗?

4

1 回答 1

0

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

order originalOrder = _bentities.Orders.FirstOrDefault(o => o.ID == updatedOrder.ID);
_bentities.Orders.ApplyCurrentValues(updatedOrder);
于 2012-07-13T12:28:45.443 回答