使用實體框架將現有實體添加到新創建的實體上的集合中

entity-framework many-to-many

我正在使用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合併選項加載的對象始終是分離的。”

我知道我可能錯過了一步或者沒有完全理解實體框架如何處理多對多關係。

熱門答案

不允許“附加”,因為您尚未保存訂單。調用“添加”會告知實體框架您要插入新聯繫人。所以你只剩下一個選擇。您需要加載聯繫人。

這是最快的方法:

OrderDetails context = new OrderDetails();
Contact contact = context.GetObjectByKey(new EntityKey("OrderDetails.Contact", "contact_id", existingContactId));
order.Contact.Add(contact);


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因