Question

J'essaie d'obtenir un modèle de présentation (discuté ici et ici) Travailler à Ria. Tous les exemples que je peux trouver sont des entités de données simples et plates sans relations 1 ou plusieurs, qui sont ce que je ne peux pas travailler - en particulier, sur les mises à jour et les inserts dans les relations associatives.

Requêtes que je peux bien fonctionner - j'ai mes cours de présentation marqués avec des attributs d'association (et inclure des attributs, le cas échéant), et j'ai une bonne compréhension de la façon dont les données sont chargées du côté client et entretenus en tant qu'entités. J'ai également des inserts de nouvelles entités couvertes. Cependant, je rencontre les problèmes suivants. Pour les exemples suivants, supposons que nous avons des entités d'album et d'artistes simples, où un album a un seul artiste et un artiste peut avoir zéro à de nombreux albums. Les deux ont une propriété de nom.

  • Du côté client, si je fais myartist.albums.add (analbum) ou myartist.albums.remove (analbum), rien ne se passe. Haschanges revient faux. (Notez que Myartist et Analbum ont été obtenus uniquement dans le code en chargeant les entités et en itérant pour obtenir des références à des entités spécifiques: je ne fais rien dans l'interface utilisateur ou avec le domainedatasources, juste en train de dîner).
  • Si je met à jour le nom sur un artiste et des sous-traitants, lorsque la méthode de mise à jour est appelée sur le serveur, la collection d'albums est nul.

Quelqu'un a-t-il des suggestions ou pouvez-vous me donner un exemple qui utilise des objets plus complexes?

ÉDITER (Garder ce qui précède pour la postérité): D'accord, il semble que le deuxième problème (une référence à une entité ou une collection d'entités affichant comme nul lorsque la mise à jour est appelée sur le serveur) existe parce que l'enfant n'est pas marqué comme modifié et Ils ne sont donc pas sérialisés et renvoyés. Je sais que vous pouvez forcer cela à se produire en utilisant [la composition] et je l'ai fait fonctionner de cette façon, mais ce n'est pas une relation de composition et je veux que les deux entités soient des entités "de haut niveau". Comment puis-je marquer une entité comme changé?

Était-ce utile?

La solution

Le problème était que mes attributs [d'association] n'étaient pas correctement définis. Je ne savais pas que la propriété du nom de l'association doit être la même des deux côtés de l'association. Lorsque les noms sont les mêmes et que vous effectuez une construction, le code généré sur le client utilise un constructeur différent pour l'entitéCollection utilisée par le "parent" pour se référer aux "enfants" que si les associations ne sont pas correctes . Le nouveau constructeur prend des rappels qui font un peu de manipulation supplémentaire lorsque vous appelez Add et supprimez sur la collection - en particulier, ils prennent l'entité enfant que vous ajoutez ou supprimez et modifiez la propriété dessus qui fait référence à son parent afin que tout reste En synchronisation: la collection dont vous avez supprimé l'objet, la collection à laquelle vous l'avez ajouté et la référence de l'objet à son parent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top