0

PHP OData sdk (odata.org) を使用しており、新しいオブジェクトと 2 つの既存のオブジェクトの間にリンクを追加しようとしています。

//Add a new object to the database. Pass in objects $v and $o.
public function addB($v,$o) {

    //Create a new object
    $b = new B();
    $b->V = $v;
    $b->O = $o;

    //Add a link between my objects
    $proxy->AddLink($b, 'V', $v);
    $proxy->AddLink($b, 'O', $o);

    $proxy->SaveChanges();
}

odata.org Web サイトの生成手順を使用して、プロキシ クラスなどを生成します。

次の例外メッセージが表示されます。

The context is not currently tracking the entity.

これは、プロキシ クラスがオブジェクトへの参照を取得していない$vか、$oどこにも格納されていないためです。プロキシ クラスの参照にオブジェクトを追加する 1 つの方法は次のとおりです。

$proxy->AddToVCollection($v);

それを行って保存しようとすると、$vオブジェクトを新しいエントリとして保存しようとするため、主キーの競合が発生します。

では、プロキシ クラスにオブジェクトを追跡させるにはどうすればよいでしょ$vうか。$oそうすれ$proxy->AddLink($b, 'V', $v);ば、上記の例外は発生しません。

4

1 に答える 1