2011-02-02 15 views
2

私はEntity FrameworkをWCFで自己追跡エンティティと共に使用しています。エンティティ・フレームワークのObjectStateManagerからエンティティをアンロードできますか?

は、私は2つのエンティティ、顧客とPriceMatrixを持つ多対多の関係(顧客は多くの歴史的な価格行列を持つことができ、そしてマトリックスは、顧客のグループ間で共有することができます)

は、クライアントが持っています更新してサーバーに送り返す単一のPriceMatrix。サーバーは、このPriceMatrixが他の顧客と共有されているかどうかをチェックしてから更新するか、または複製して複製を更新するかを選択する必要があります。

問題は、更新されたPriceMatrixを添付する前に、それを調べるためにPriceMatrixを読み込んでいるために、私がApplyChanges()を呼び出すときに次のエラーが発生しているということです。

"オブジェクトのキー値がObjectStateManager内の別のオブジェクトと競合するため、AcceptChangesを続行できません。AcceptChangesを呼び出す前にキー値が一意であることを確認してください。

私は私の小切手をコメントアウトして(したがって、PriceMatrixを読み込まないでください)すべて正常に動作します。

本当にしたいのは、状態を調べた後、PriceMatrixをアンロードし、クライアントから受け取った更新済みのPriceMatrixを添付することです。

答えて

2

DetachObjectContextの方法を使用してみてください。これはSTEのknown issueです。AcceptChangesでは、同じキーを持つSTEが以前にコンテキストに読み込まれていないことが必要です。

関連する問題