WCFサービスコール経由で提供されたEntity Frameworkコンテキストにオブジェクトツリーを添付しようとしています。問題のオブジェクトには子アイテムのコレクションがあり、各子アイテムには別の追跡オブジェクトタイプのプロパティがあります。しかし、これらの最後のアイテムは少数しかないので、ほとんどのコレクションアイテムがそれらを共有します。 (EntityObjectsと明らかに、除く、)このような何か:私は、同じ製品のために複数の詳細を持って注文を持っているときはいつでも、複数のコピーを添付しようとしているので、Entity Frameworkのは、取り付け時に文句を言いEntity Framework Attach()共有オブジェクトを持つオブジェクトツリー
public class Product
{
public int Id;
public string Name;
public decimal Cost;
}
public class Order
{
public int Id;
public List<Detail> details;
}
public class Detail
{
public int Id;
public Product Product;
public int Quantity;
}
同じプロダクトキー。この情報はWCF ServiceOperationから入ってくるので、クライアントでは共有オブジェクトのセットであっても、Productの個別のインスタンスとして逆シリアル化されています。
アタッチが発生したときに、追跡されたエンティティを再利用するようにEFオブジェクトコンテキストに指示する方法はありますか?私は製品を直接接続していないので、TryGetObjectStateEntryのチェックのようなトリックは機能しません。
提案がありますか?
EDIT:
私はSlaumaの答えの代替として使用することができ、クライアント側のオプションのカップルが含まれて(私が使用してに切り替えている)自己追跡エンティティに関する次の記事、全体で走っ、サーバー側で調整コードを保持します。 (自己追跡エンティティは(アタッチを使用する必要性を排除する)が、重複キーの問題がまだ存在しています。)