Bonjour.
Je me tourne de nouveau vers vous pour vous exposer le problème suivant.
Voici le MLD simplifié de l'application.
Produit(id, nom, emplacement)
Fournisseur(id, nom, adresse)
Tarifs(id_produit, id_fournisseur, tarif) Couple clé primaire -> id_produit et id_fournisseur.
Je ne sauvegarde qu'un seul tarif par fournisseur pour chaque produit.
Lorsque j'essaie de mettre à jours la liste des fournisseurs d'un produit en en supprimant un par exemple j'obtiens l'erreur suivante : "The value of key member 'id_produit' on an instance of an entity of type 'tarifs' has changed. Entity key members cannot be changed"
De même si j'essaie d'ajouter un nouveau fournisseur.
// La variable UnFournisseurExistant désigne un fournisseur sélectionné au préalable dans une liste et donc déjà présent dans la liste des "Entities".
Je comprends tout à fait que EF empêche la mise à jours des champs clé primaire d'objet existants mais de toute évidence ici j'essaie d'insérer un nouvel objet dans la relation tarifs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 tarif MonTarif = new tarif(); MonTarif.prix = 10; MonTarif.fournisseur = UnFournisseurExistant; this.DomainContext.tarifs.Add(MonTarif); this.CurrentProduit.tarif.Add(MonTarif); this.DomainContext.SubmitChanges();
A noter que je n'ai pas le problème lorsqu'il s'agit d'un produit qui n'existe pas encore dans la base de données et que j'instancie séparément.
Toute aide sera grandement appréciée.
Merci par avance.
Partager