3

我有两个表,Order 和 OrderItems

Order 表有一个 OrderId 列作为主键 OrderItems 也有这个列作为外键。

对于给定的订单,如果 OrderId 为 1 并且它有两个项目,则 OrderItems 表将有两行,每行的 OrderID 为 1。

使用 EF,我用这两个表创建了一个上下文。

现在 Order 表和 OrderItems 表都有一个 Status 列。

使用 GraphDiff 我想像这样更新这个值:

using (var ordersContext = new OrdersContext())
{
    ordersContext.UpdateGraph(orderToUpdate, map => map.OwnedCollection(p => p.OrderItems));
    ordersContext.SaveChanges();
}

这给出了以下异常:

GraphDiff supports detached entities only at this time. Please try AsNoTracking() or detach your entites before calling the UpdateGraph method

有什么线索吗?

提前致谢。

4

1 回答 1

0

异常意味着 orderToUpdate 或相关属性很可能已附加到上下文或上下文的另一个实例。在调用此代码之前,您需要查看如何检索或生成 orderToUpdate。

例如,如果你这样做

var ordersContext = new OrdersContext();
var orderToUpdate = ordersContext.Find(orderToUpdateId); // id of what is looked for
orderToUpdate.DateCreated = DateTime.Now; // any sort of update

那么在那种情况下,我相信由于异常,该对象仍然是附加的;

于 2015-03-04T15:37:40.363 回答