Verwenden des Entitätsframeworks zum Hinzufügen vorhandener Entitäten zu einer Sammlung in einer neu erstellten Entität

entity-framework many-to-many

Frage

Ich verwende das Entity-Framework, um eine neue Bestellung zu erstellen. Die Bestellung enthält eine Sammlung von Kontakten, viele zu vielen Beziehungen. Ich möchte bei der Bestellung beim Erstellen der Bestellung einen Verweis auf einen vorhandenen Kontakt hinzufügen. Bestellen Sie Objekte und kontaktieren Sie Objekte.

 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();

Beim Anhängen wird diese Ausnahme ausgelöst:

"Attach ist keine gültige Operation, wenn sich das mit diesem verwandten Ende verknüpfte Quellobjekt in einem hinzugefügten, gelöschten oder getrennten Zustand befindet. Objekte, die mit der NoTracking-Zusammenführungsoption geladen werden, werden immer getrennt."

Ich weiß, dass mir wahrscheinlich ein Schritt fehlt oder ich nicht vollständig weiß, wie das Entity-Framework viele-zu-viele-Beziehungen handhabt.

Beliebte Antwort

"Anhängen" ist nicht zulässig, da Sie die Bestellung noch nicht gespeichert haben. Wenn Sie "Hinzufügen" aufrufen, wird Entity Framework angewiesen, einen neuen Kontakt einzufügen. Sie haben also nur eine Option. Sie müssen den Kontakt laden.

Hier ist der schnellste Weg, dies zu tun:

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


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum