0

J'utilise Silverlight 4, Entity Framework 4 et WCF Data Services. Dites que j'ai un objet Playlist. Cet objet Playlist a des propriétés et une clé étrangère représentée par une propriété de navigation 0 à 1 vers un objet d'affichage. Dans la base de données, il y a une colonne Display_Id. J'essaie de sauvegarder la playlist et de définir display_id directement, sans charger un objet d'affichage entier de la base de données (j'obtiens l'identifiant d'affichage de la chaîne de requête). J'ai essayé:Enregistrer une clé étrangère, mais pas l'objet entier dans WCF Data Services

playlist.Display = new Display() { Id = 3136 }; 
// this SetLink throws an exception that the Display is not yet tracked  
context.SetLink(playlist.Display, "Display", playlist); 
// or i've tried, but get an error: Entities in 'EDM.Displays' participate in the //'DisplayX' relationship. 0 related 'X' were found. 1 'X' is expected 
context.AddToDisplays(playlist.Display); 
context.SetLink(playlist, "Display", playlist.Display); 

Ai-je besoin de changer mon EDM ou est-il un moyen de le faire sur le côté client?

Répondre

1

d'abord, vous devez attacher objet à ObjectSet

Display d = new Display{ id = 3136 }; 
context.Displays.Attach(d); 

il exécuté localement sans base de données d'appel, et vous pouvez travailler comme vous avez besoin

il y a une autre façon Playliste d'objet contient objet DysplayReference avec la propriété EntityKey si elle est nulle puis la crée, sinon il suffit de remplacer la clé dans EntityKeyValues ​​

+0

Je crois que la méthode AddToDisplays l'attache au contexte. – Aligned

+0

EF aide ceux qui s'aident eux-mêmes;) – ASpirin

Questions connexes