1

Nous utilisons un service de données WCF pour négocier notre côté serveur de données et permettre à des tiers d'accéder facilement à nos données par OData. Le côté serveur des choses a été relativement facile. Le côté client, d'un autre côté, nous donne des ajustements. Nous convertissons l'environnement Entity Framework en services de données, et nous avons créé un assembly qui contient les objets client générés qui communiquent avec le service de données (via une référence de service). Ces classes sont partielles, nous leur avons donc ajouté de la logique et des propriétés étendues. Tout cela fonctionne très bien. Le problème que nous avons est que nous avons besoin de traiter nos objets au moment de la sauvegarde, car ils doivent effectuer une sérialisation avancée avant de les envoyer sur le réseau. La classe DataServiceContext contient deux événements: WritingEntity et ReadingEntity. L'événement ReadingEntity se produit réellement au bon moment pour nous (désérialisation post-objet). L'événement WritingEntity se produit au moment WRONG pour nous (sérialisation post-objet).Services de données WCF: traitement d'un objet au moment de la sauvegarde

Est-il possible d'attraper un objet avant qu'il ne soit écrit à la demande, de sorte que nous pouvons appeler une méthode sur l'entité qui est sur le point d'être écrit? Il est évident que nous pourrions simplement parcourir la liste Entités, en recherchant toute entité qui n'est pas dans un état Inchangé ou Supprimé, et appeler la méthode appropriée ici ... mais cela nécessiterait que j'ajoute un code spécial chaque fois que je voulait appeler SaveChanges sur le contexte. Cela peut être ce que nous devons faire, mais ce serait bien s'il y avait un moyen d'attraper les entités avant qu'elles ne soient écrites en XML pour l'envoi au service.

Répondre

0

Actuellement, il n'y a aucun crochet dans le DataServiceContext pour faire ce que vous voulez. Le plus proche que je puisse penser est l'approche que vous avez suggéré de marcher toutes les entités et les conclusions de ceux qui ont été modifiés. Vous pouvez le faire dans votre propre méthode SaveChanges-comme sur la classe de contexte (qui est aussi partielle).

Questions connexes