2010-03-31 3 views
1

J'ai une base de données constituée de 5 tables: Course, Category, Location, CourseCategories et CourseLocations. Les 2 dernières tables contiennent juste les deux clés étrangères. Un cours a des relations plusieurs-à-plusieurs avec la catégorie et l'emplacement. J'essaie de charger les données dans une application Silverlight en utilisant Ria Services. Mon modèle de base de données est Linq-to-SQL. J'ai essayé d'ajouter l'attribut [Include] aux classes de métadonnées et j'ai ajouté le DataLoadOptions de sorte qu'il devrait charger toutes les tables quand vous demandez un cours. Cependant, du côté client, je ne récupère jamais d'entrées dans les propriétés CourseCategories et CourseLocations. Quoi d'autre doit être fait pour obtenir les relations de clé étrangère à travers la sérialisation.Services Ria chargeant des clés étrangères avec Linq-to-SQL

Répondre

4

Il y a deux étapes pour inclure les enregistrements d'une relation de clé étrangère:

1. Parlez WCF RIA Services sur le Inclure

En plaçant l'attribut [Include] dans la définition de votre entité, au-dessus clé étrangère

[Include] 
public MyOtherTable MyOtherTable { get; set; } 

2. Dites-WCF RIA Servics que cette requête particulière utilise Comportent

Dans votre requête, vous devez utiliser la logique .Include("MyOtherTable") pour indiquer à cette requête d'inclure les données de cette relation.

public IQueryable<Table> GetTable()  
{ 
    return this.ObjectContext.Table.Include("MyOtherTable"); 
} 

On dirait que vous manquez la deuxième étape. Cette deuxième étape vous permet de choisir les requêtes qui téléchargent ces enregistrements supplémentaires.

+0

Mon problème est que je lie aux objets au début. Les objets inclus apparaissaient, mais retardés à partir du moment où l'objet apparaît pour la première fois dans la collection. Marquage comme réponse parce que c'était très proche de mon problème en premier lieu. – Stephan