J'utilise l'infrastructure Entity pour créer une nouvelle commande. 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. Commande et contactent tous les objets d'une entité.Utilisation de l'infrastructure d'entité pour ajouter des entités existantes à une collection sur une entité nouvellement créée
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:
« Attach n'est pas une opération valide lorsque l'objet source associé à cette fin connexe est dans un ajouté, supprimé, ou état détaché des objets. chargés en utilisant l'option de fusion NoTracking sont toujours détachés. "
Je sais que je manque probablement une étape ou que je ne comprends pas complètement comment le cadre d'entité gère les relations plusieurs-à-plusieurs.
Ou vous pouvez créer une entité de talon (avec la clé que vous connaissez) attach que le contexte (pas la collecte), puis ajouter les sous à la collection . Voir l'astuce 26 pour plus d'informations: http://blogs.msdn.com/alexj/archive/2009/06/19/tip-26-how-to-avoid-database-queries-using-stub-entities.aspx –
Brilliant! Oui, ce qu'il a dit. –