2011-11-15 2 views
2

Je voudrais un DomainService comme suit:Comment retourner graphique hiérarchique avec les services RIA

[EnableClientAccess] 
    public class FamilyService : DomainService 
    { 
     public IQueryable<Person> GetPeople() // for the time being fake out a set of people 
     { 
      var people = new[]{ new Person(), ... }; 
      return people.AsQueryable(); 
     } 
    } 

La classe personne devrait être assez simple:

public class Person 
    { 
     [Key] 
     public Guid Id { get; set; } 
     public Person Parent { get; set; } 
     public String Name { get; set; } 
     public Person[] Children { get; set; } 
    } 

Dans le client Silverlight, la classe Person qui est généré n'inclut pas les propriétés Parent ou Children. Qu'est-ce que je rate?

(Je devrais peut-être souligner que, bien que ce soit un exemple fictif, je prévois d'utiliser une approche faiblement couplée, que cela imite.En fait, la plupart de mes données ne réside pas dans une base de données. la majorité des exemples RIA utilisent une parité de bout en bout de modèle de la base de données à l'interface utilisateur, ce qui n'est pas une option dans mon cas.)

Répondre

1

Essayez d'ajouter l'attribut [Include] aux propriétés parent & enfants.

public class Person 
{ 
    [Key] 
    public Guid Id { get; set; } 
    [Include] 
    public Person Parent { get; set; } 
    public String Name { get; set; } 
    [Include] 
    public Person[] Children { get; set; } 
} 

Si la classe Person sort de la DB (dans votre application dans le monde réel) et que vous utilisez EF, alors vous devez les forcer à charger avec impatience, en utilisant la méthode .Include().

+1

J'avais aussi besoin d'ajouter un attribut Association avec le Include. –

+0

Ah. Je n'ai pas eu à le faire moi-même. C'est assez difficile à propos de ce qu'il veut. C'est bon d'entendre que vous l'avez résolu. –