Ich verwende das Entity-Framework, um eine neue Reihenfolge zu erstellen. Die Bestellung enthält eine Sammlung von Kontakten, eine Viele-zu-Viele-Beziehung. Ich möchte einen Verweis auf einen vorhandenen Kontakt in der Bestellung bei der Erstellung des Auftrags hinzufügen. Eine Entity-Objekte ordnen und kontaktieren.Verwenden des Entitätsframeworks zum Hinzufügen vorhandener Entitäten zu einer Auflistung in einer neu erstellten Entität
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();
Wenn ich befestigen gehen, wird diese Ausnahme ausgelöst:
„Bringen Sie keine gültige Betrieb ist, wenn das Quellobjekt mit diesem verknüpften Ende zugeordnet ist, in einem hinzugefügt, gelöscht oder abgenommenen Zustand Objekte. geladen mit der NoTracking Merge-Option sind immer getrennt. "
Ich weiß, dass ich wahrscheinlich einen Schritt verpasse oder nicht vollständig verstehe, wie das Entitätsframework viele-zu-viele-Beziehungen handhabt.
Oder Sie können eine Stub Entität erstellen (mit dem Schlüssel, den Sie kennen) befestigen, dass auf den Kontext (nicht die Sammlung) und dann den Unter In die Sammlung . Siehe Tipp 26 für mehr: http://blogs.msdn.com/alexj/archive/2009/06/19/tip-26-how-to-avoid-database-queries-using-stub-entities.aspx –
Brilliant! Ja, was er gesagt hat. –