2013-05-07 2 views
0

ok voici l'affaire. Je travaille avec le modèle MVVM en C#. J'ai une classe PlaceChild, PlaceChildList et une classe Manage qui a la PlaceChildList dedans. Et PlaceChild a une ForeignKey de ManageID. Maintenant, je veux dans la méthode "LoadProperty" de la classe Manage pour remplir PlaceChildList avec PlaceChild qui a obtenu la clé étrangère de ManageID. Je sais qu'il y a une manière spéciale de manipuler avec des étrangers mais je ne pourrais pas trouver n'importe quoi. donc les liens seraient utiles aussi. thxCSLA Loading liste par ForeignKey dans LoadData

court: Classes ->

Gérer

PlaceChild

PlaceChildList

Gérer contient PlaceChildList wich je veux remplir avec des objets PlaceChild Wich a la ForeignKey de Manage.

tabels ->

Manage

Place (ForeignKey = ManageID)

private void LoadData(Data.Manage data) 
    { 
     using (BypassPropertyChecks) 
     { 
      this.ID = data.ID; 
      this.Name = data.Name; 

      // this.PlaceChildListdata = .... get data by foreign key this.ID 
     } 
    } 
+0

Est-ce que votre question est de savoir comment implémenter le code DataPortal_Fetch pour récupérer les données de l'objet, ou le code DataPortal_Insert/Update pour enregistrer les données de l'objet? –

+0

la classe Gérer a besoin de récupérer tous les objets de PlaceChild qui ont eu le droit ForeignKey.je espérait qu'il y ait quelque chose comme une clé "obtenir toutes les données par clé étrangère" -Fonction: P –

Répondre

0

Comme vous le savez probablement, l'AAPC ne met pas en œuvre votre code d'accès aux données, vous le faites.

Le portail de données aide à orchestrer le chargement de vos objets avec des données. Je suppose que vous utilisez l'invocation encapsulée (DataPortal_XYZ) et non l'implémentation en usine dans le portail de données.

(et je suppose que vous avez lu l'ebook « Utilisation AAPC 4 », ou quelque chose de comparable au fil des ans)

Le portail de données a un concept d'objet enfant. Ainsi, dans la méthode DataPortal_Fetch de votre objet racine (qui, je suppose, appelle votre méthode LoadData comme indiqué dans votre message), vous pouvez appeler DataPortal.FetchChild pour récupérer chaque enfant.

La méthode FetchChild accepte un tableau de paramètres, vous permettant de transmettre les paramètres nécessaires au chargement de chaque objet enfant avec des données.

Dans le cas d'une collection, l'objet parent (la classe list) appelle la couche d'accès aux données pour récupérer toutes les données de la collection, puis boucle cette donnée pour appeler et charger chaque objet enfant. La ligne de données spécifique à cet enfant est transmise en tant que paramètre.

Il y a beaucoup d'exemples dans le dossier Samples du téléchargement du programme d'installation CSLA. Et le livre numérique «Utiliser CSLA 4: Accès aux données» couvre tout cela avec beaucoup de détails.