2010-12-08 54 views
3

Supposons que vous créez un service de domaine RIA et que vous y incluiez une entité Person (ci-dessous), pouvez-vous accéder à des entités agrégées sur cet objet?Si vous créez un DomainService, en exposant une entité, pouvez-vous accéder à des entités agrégées?

Par exemple, si j'ai des entités comme si (gardez à l'esprit que c'est une représentation naïve, ils sont modélisés par le concepteur EF4):

public class Person 
{ 
    string FirstName { get; set; } 
    PhoneNumber { get; set; } 
} 

public class PhoneNumber 
{ 
    public string AreaCode { get; set; } 
    public string Trunk { get; set; } 
    public string Number { get; set; } 
} 

Si je comprend Person lors de la création du PeopleDomainService, peut le client accède-t-il au PhoneNumber dessus (et le modifie)?

Répondre

1

Oui, vous pouvez importer des entités associées.

Dans le fichier PeopleDomainService.metadata.cs, ​​recherchez la classe PersonMetadata. Sur la propriété phoneNumbers, ajoutez l'attribut « Inclure »:

[Include]: 
public EntityCollection<PhoneNumber> PhoneNumbers { get; set; } 

Dans les PeopleDomainService.cs, recherchez la fonction GetPersons et le modifier pour inclure les PHONENUMBERS:

public IQueryable<Person> GetPersons() 
{ 
    return this.ObjectContext.Persons.Include("PhoneNumbers"); 
} 

Vous pouvez trouver plus de détails sur MSDN>Walkthrough: Taking a Tour of RIA Services> Affichage des données associées

+0

+1. Merci pour le conseil. Pour les futurs lecteurs, j'ai également dû ajouter l'attribut [Association (name, thisKey, otherKey)] à la collection ainsi que l'attribut 'Include'. –

2

Vous pouvez décorer l'attribut PhoneNumber de l'objet Person avec l'attribut [Include]. N'oubliez pas d'inclure une instruction include dans votre requête LINQ lorsque vous obtenez un objet Person.