Utilisation du cadre d'entité pour ajouter des entités existantes à une collection sur une entité nouvellement créée

entity-framework many-to-many

Question

J'utilise le framework Entity pour créer un nouvel ordre. La commande contient une collection de contacts, une relation plusieurs à plusieurs. Je souhaite ajouter une référence à un contact existant sur la commande lors de la création de la commande. Ordonner et contacter une entité Objets.

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

Quand je vais attacher, cette exception est levée:

"L'attache n'est pas une opération valide lorsque l'objet source associé à cette extrémité associée est dans un état ajouté, supprimé ou détaché. Les objets chargés à l'aide de l'option de fusion NoTracking sont toujours détachés."

Je sais que je manque probablement une étape ou que je ne comprends pas bien comment le framework d'entités gère les relations plusieurs-à-plusieurs.

Réponse populaire

"Attach" n'est pas autorisé car vous n'avez pas encore enregistré la commande. L'appel "Ajouter" indique à Entity Framework que vous souhaitez insérer un nouveau contact. Donc, il ne vous reste qu'une seule option. Vous devez charger le contact.

Voici le moyen le plus rapide de le faire:

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow