IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Communication Foundation .NET Discussion :

[WCF et Entité] Problèmes cycliques


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut [WCF et Entité] Problèmes cycliques
    Bonjour,

    J'ai un problème d'utilisation de WCF avec linq.

    En gros lorsque je renvois des données composé de beaucoup d' "entités Dlinq" lié entre elle j'ai ce type d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ComunicationException
    There was an error while trying to serialize parameter http://tempuri.org/:record. The InnerException message was 'Object graph for type 'Cephalon.Regstup.Common.RegstupService.MedicamentRecordQuantity' contains cycles and cannot be serialized if reference tracking is disabled.'.  Please see InnerException for more details.
    En gros c'est du au fait que lorsque l'on a une relation de type :
    Un objet Personne a un objet Adresse => l'objet Adresse contient un EntitySet des objets Personne qui ont cette addresse.
    D'où le cycle à la serialisation (le sérialiseur sérialise l'objet personne puis son adresse relative puis les personne relative puis l'adresse relative, etc)

    J'avais déjà résolu ce problème de serveur => client avec un attribut qui customise la serialisation effectué par le ServerHost mais je ne trouve pas de solution pour le Client => Server.

    Il est dit d'activer le "reference tracking" mais je ne trouve pas comment l'activer.

    Donc voila si quelqu'un a déjà eu ce genre de problème est ce qu'il pourrait me dire comment il l'a résolu ?

    Merci

  2. #2
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut
    Salut,

    tu utilises "l'antipattern" WCF + linq...

    j'ai aussi eu ce problème, et je n'ai pas trouvé de solution adroite avec linq to sql.

    Apparemment il faut attendre linq to entity.(nhibernate?)

    En attendant, je ne serialize pas les relations.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par gdkenny Voir le message
    Apparemment il faut attendre linq to entity
    Attendre ? Plus besoin d'attendre, les SP1 de VS2008 et du framework 3.5 sont sortis il y a quelques semaines

  4. #4
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  5. #5
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Attendre ? Plus besoin d'attendre, les SP1 de VS2008 et du framework 3.5 sont sortis il y a quelques semaines

    je savais que le sp1 était sortie mais pas qu'il contenait linq to entity

  6. #6
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    linq to entity pose les mêmes problemes

    par contre il y a des solution comme en utilisant des serialiseur qui verifie les cycles dans les graphe d objet ou mettre certaines propriété des entité en internal ou encore mettre la serialisation a unidirectionnal

  7. #7
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut
    Citation Envoyé par anthyme Voir le message
    linq to entity pose les mêmes problemes

    par contre il y a des solution comme en utilisant des serialiseur qui verifie les cycles dans les graphe d objet ou mettre certaines propriété des entité en internal ou encore mettre la serialisation a unidirectionnal
    A bon? j'ai pourtant lu que linq to entity proposait une sérialization des graphes par défaut

    http://realworldsa.dotnetdevelopersjournal.com/

  8. #8
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    il met les attributs datamember mais je ne crois pas que cela résoud les problemes de cycles,

    il faudra que je vérifie.

  9. #9
    Membre éclairé
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Par défaut Qu'en est il de linq to entity?
    Salut,
    Linq to entity serialise par defaut?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par IsraGab Voir le message
    Salut,
    Linq to entity serialise par defaut?
    Que veux-tu faire plus exactement ?

    Pas défaut tes entités sont sérialisables vu qu'elles sont décorées de l'attribut DataContract et les propriétés de DataMember.

  11. #11
    Membre éclairé
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Par défaut
    Oups, ah ouai?! J'avais pas fais gaffe
    Je cherche juste a connaitre un peux plus linq to entities.
    L'année derniere j'avais fait un site en me servant de linq to sql pour l'utilisation des données. La je le refait avec les particularités du framework 4.

    Mais si deja tu me pose la question. Cela veut il dire que la serialisation est bidirectionelle?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par IsraGab Voir le message
    Cela veut il dire que la serialisation est bidirectionelle?
    Ouais.

  13. #13
    Membre éclairé
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Par défaut
    Et si je veux rendre unidirectionnel comment je fais?

    (Merci pour tes réponse au fait, )

  14. #14
    Invité
    Invité(e)
    Par défaut
    Avant d'aller loin qu'entends-tu par bidirectionnels et unidirectionnels ?

    Moi j'entends par unidirectionnel, le fait que la requête soit envoyée par le client et qu'après il continue ce qu'il faisait et s'en fou que la requête envoyée soit bien traitée ou pas. ça toujours été possible avec WCF et c'est pas parce que c'est Linq to Entities que cela va changer. Il suffit de jouer sur la propriété IsOneWay de ton attribut OperationContract.

  15. #15
    Membre éclairé
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Par défaut
    Merci,
    Je ne savais pas que je pouvais donner des arguments a mon attribut OperationContract.

    Oui, unidirectionnel, justement. Comme ca le client est plus libre.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Je suis d'accords que le client est plus libre mais n'est pas recommandé et impossible d'intercepter les FaultException (exception SOAP).

Discussions similaires

  1. [Débutant] WCF Compatible Ajax : Problème de cache ?
    Par StringBuilder dans le forum Services Web
    Réponses: 1
    Dernier message: 24/07/2014, 17h54
  2. [DEBUTANT]WCF avec IIS problème de port
    Par bibeuz dans le forum Services Web
    Réponses: 4
    Dernier message: 15/07/2013, 17h18
  3. WCF et WMI : problème lors de la mise en ligne
    Par tom741 dans le forum Windows Communication Foundation
    Réponses: 3
    Dernier message: 13/09/2010, 12h28
  4. [XML] Problème d'entité externe dans mon XSLT
    Par fragmonster dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 13/04/2007, 14h55
  5. [Debutant] Bean entité BMP - problème JNDI
    Par Tanahjampea dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 17/01/2006, 09h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo