3

Order と OrderItems の 2 つのテーブルがあります。

Order テーブルには、主キーである OrderId 列があります。OrderItems にも、この列が外部キーとして含まれています。

特定の Order について、OrderId が 1 で 2 つの項目がある場合、OrderItems テーブルには、それぞれ OrderID が 1 である 2 つの行が含まれます。

EF を使用して、2 つのテーブルでコンテキストを作成しました。

これで、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 に答える