2009-11-12 10 views
2

Je lis et fais de la RnD sur RIA comme solution pour un nouveau projet Silverlight.Récupération des services entité unique + services RIA

J'ai lu beaucoup de la documentation et j'ai décidé de faire une petite maquette d'un système utilisant les services .Net RIA.

Je veux savoir comment obtenir une entité unique du service de domaine?

exemple: Je veux une personne et remplir un formulaire:

public Person GetSinglePerson() 
     { 
      return new Person { ID = 4, FirstName = "Cyanide", LastName = "Happiness", Status=3 }; 

} dire que j'utilise le l'DomainDataSource:

<riaControls:DomainDataSource x:Name="source2" QueryName="GetSinglePersonQuery" AutoLoad="True"> 
        <riaControls:DomainDataSource.DomainContext> 
         <web:DataContext/> 
        </riaControls:DomainDataSource.DomainContext> 
       </riaControls:DomainDataSource> 

Cela ne retourne un EntityCollectionView? Comment lier par exemple dans un formulaire à des propriétés qui sont dans la classe Person?

Comme:

<TextBox Text="{Binding FirstName, ElementName=source2}"/> 

Tout semble revenir comme IEnumerable ou CollectionViews (comme la liaison de données dans les échantillons) qui ne sont pas utiles pour une seule entité.

Je veux une entrée pour une seule personne, pourquoi je veux un CollectionView dans lequel je ne peux pas accéder directement aux propriétés.

j'utiliser aussi:

LoadOperation<Person> oLoadOperation = oDataContext.Load(oDataContext.GetSinglePersonQuery()); 

Je suis très proche de renoncer à cette idée RIA et d'aller juste avec un service WCF normal car il est plus prévisible et gérable à ce stade.

Répondre

-1

Je suppose que votre classe est décorée avec [EnableClientAccess]?

essayer

<TextBlock Text="{Binding Path=Person.FirstName}" 
3
ctxt.Load(ctxt.GetEmployeeByNumberQuery("ABC123")).Completed += new System.EventHandler(EmployeeLoad_Completed); 


void EmployeeLoad_Completed(object sender, System.EventArgs e) 
{ 
    Employee myEmployee = (sender as LoadOperation<Employee>).Entities.FirstOrDefault(); 
} 
1
 HumanResourceContext context = new HumanResourceContext(); 

     var addressquery = context.GetAddressesQuery(); 
     addressquery = addressquery.Where(a => a.AddressId == 1); 

     context.Load(addressquery, (op) => 
      { 
       Address address = op.Entities.FirstOrDefault(); 

       MessageBox.Show(address.Street1); 
      }, null);