EF4 POCO: Instantané vs suivi automatique sur WCF

entity-framework poco self-tracking-entities snapshot wcf

Question

L'année dernière, j'ai développé un service d'accès aux données pour notre projet en utilisant Entity Framework (bien entendu .NET3.5) et en utilisant le livre de Julie Lerhman comme guide pour développer des objets POCO de suivi d'état. Nous utilisons WCF et avons également des clients Silverlight 3. Nous passons à .NET 4.0 et je souhaite passer à la génération de code afin d’éviter le temps perdu par les développeurs à écrire les classes POCO et les classes de traduction.

D'après les recherches que j'ai effectuées, il semble exister 3 méthodes de suivi d'état des POCO:

1) Proxy suivis modifiés: Cela ne semble pas être utile pour nous car il semble que cela ne fonctionne pas avec la sérialisation WCF.

2) Basé sur un instantané: Un instantané est pris lorsque le graphe d'entité POCO est récupéré, le graphe renvoyé par le client est comparé à cet instantané et les différences sont comparées ... cela me semble bon.

3) Entités de suivi automatique: le générateur de code génère une logique permettant d'effectuer un suivi automatique dans les objets POCO. Cela semble proche de ce que nous faisons maintenant, sauf que tout est généré pour nous.

J'essaie de déterminer quels sont les avantages et les inconvénients de toutes ces méthodes. Je suppose que 1 et 2 sont "connectés" et qu’ils ont besoin du ObjectContext à partir duquel les POCO ont été interrogés pour rester instanciés, mais n’ont pas pu le confirmer. Je ne vois pas non plus pourquoi quiconque s'embarrasserait vraiment de l'option 1, étant donné que l'option 3 semble faire de même et plus encore ...

L'instantané me semble le plus simple, mais si cela nécessite un ObjectContext pour rester ouvert longtemps, je n'en suis pas si sûr ...

Je ne suis qu'un programmeur junior, donc tout conseil, en particulier en ce qui concerne Silverlight 3 (je pense que les options 2 et 3 fonctionnent avec Silverlight 3 mais que 2 peut avoir des problèmes) est très apprécié.

Réponse acceptée

Optez pour l'option 3. Les entités à suivi automatique, car c'est pour cela qu'elles ont été conçues.

"Les entités à suivi automatique sont optimisées pour les scénarios de sérialisation"

Ce post donne une bonne démonstration.


Réponse populaire

Les deux autres options ne sont applicables que lorsque des modifications sont apportées lorsque le contexte d'objet est présent. Votre seule option est STE. Avec STE, les entités garderaient une trace de leurs propres changements. Lorsque le graphe d'objet modifié est envoyé au serveur, vous pouvez simplement lire ces modifications comme indiqué ci-dessous. db.Dustomers.ApplyChanges (client); db.SaveChnages ();

Avec STE, vous pouvez créer vos entités dans un projet de bibliothèque de classes et les partager entre un client WCF, un client Silverlight, asp.net et wpf. Cela vous permet donc de réutiliser des entités pour divers clients.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow