エンティティ フレームワークを使用して新しい注文を作成しています。注文には、多対多の関係である連絡先のコレクションが含まれています。注文の作成時に、注文に既存の連絡先への参照を追加したいと考えています。Order と Contact a Entity オブジェクトの両方。
Order order = new Order();
//set details on order
Contact contact = new Contact();
EntityKey contactKey =
new EntityKey("OrderDetails.Contact",
"contact_id", contact.Key.Id);
contact.EntityKey = contactKey;
contact.contact_id = contact.Key.Id;
order.Contact.Attach(contact); // throws an exception!
OrderDetails ordTable = new OrderDetails();
ordTable.AddToOrder(order);
int result = orgTable.SaveChanges();
アタッチしようとすると、次の例外がスローされます。
「この関連エンドに関連付けられたソース オブジェクトが追加、削除、または切り離された状態にある場合、アタッチは有効な操作ではありません。NoTracking マージ オプションを使用してロードされたオブジェクトは常に切り離されます。」
おそらく、エンティティ フレームワークが多対多の関係を処理する方法を完全に理解していないか、ステップを見逃している可能性があります。