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

NHibernate Discussion :

[C#]nHibernate, web service et IList


Sujet :

NHibernate

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2005
    Messages : 27
    Points : 18
    Points
    18
    Par défaut [C#]nHibernate, web service et IList
    Bonjour,

    Je suis face a un probleme que je n'arrive pas a resoudre depuis quelques jours...

    Je remonte des objets via nHibernate et j'aimerais les passer par mon webservice mais je n'arrive pas a le faire car je me retrouve toujours avec des exceptions:

    voici le code de ma methode du WS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        [WebMethod, XmlInclude(typeof(Player)), XmlInclude(typeof(Location))]
        public Location load()
        {
       RemonteLoc rl = new RemonteLoc();
       Location l = rl.remonte();
     
        return l;
        }
    En gros j'appelle simplement une methode d'une couche inferieur qui doit me retourner un objet

    Et voici par exemple 2 de mes classe nhibernate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    using System;
    using System.Xml.Serialization;
     
    namespace AccessLayer.NHibernateClasses
    {
        [Serializable]
        public class Location
        {
     
            private System.Int32 idlocation;
            private System.String locationname;
            private System.Collections.IList players;
            private System.Int32 postcode;
     
            public virtual System.Int32 Idlocation
            {
                get
                {
                    return idlocation;
                }
                set
                {
                    idlocation = value;
                }
            }
     
            public virtual System.String Locationname
            {
                get
                {
                    return locationname;
                }
                set
                {
                    locationname = value;
                }
            }
     
     
            public virtual System.Collections.IList Players
            {
                get
                {
                    return players;
                }
                set
                {
                    players = value;
                }
            }
     
            public virtual System.Int32 Postcode
            {
                get
                {
                    return postcode;
                }
                set
                {
                    postcode = value;
                }
            }
     
            public override bool Equals(object obj)
            {
                return base.Equals(obj);
            }
            public override int GetHashCode()
            {
                return base.GetHashCode();
            }
            public override string ToString()
            {
                return base.ToString();
            }
     
     
     
     
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    using System;
    using System.Xml.Serialization;
    namespace AccessLayer.NHibernateClasses
    {
        [Serializable]
        public class Player
        {
     
            private System.Int32 idplayer;
            private System.Int32 actualhandicap;
            private System.DateTime birthday;
            private Location idlocation;
     
     
            public virtual System.Int32 Idplayer
            {
                get
                {
                    return idplayer;
                }
     
                set
                {
                    idplayer = value;
                }
            }
     
            public virtual System.Int32 Actualhandicap
            {
                get
                {
                    return actualhandicap;
                }
                set
                {
                    actualhandicap = value;
                }
            }
     
            public virtual System.DateTime Birthday
            {
                get
                {
                    return birthday;
                }
                set
                {
                    birthday = value;
                }
            }
     
            public virtual Location Idlocation
            {
                get
                {
                    return idlocation;
                }
                set
                {
                    idlocation = value;
                }
            }
     
     
     
     
            public override bool Equals(object obj)
            {
                return base.Equals(obj);
            }
            public override int GetHashCode()
            {
                return base.GetHashCode();
            }
            public override string ToString()
            {
                return base.ToString();
            }
     
     
     
     
        }
    }
    En gros j'aimerais savoir comment obtenir sur mon client une localite contenant mon ilist de players....

    Je me retrouve souvent avec une circular reference. Sinon j'ai aussi essayé les xmlinclude etc... Je m'en sors plus.

    Merci d'avance

  2. #2
    Membre averti

    Inscrit en
    Septembre 2004
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 105
    Points : 339
    Points
    339
    Par défaut
    Quelles sont ces "exceptions" que tu obtiens ?
    Lit les et essaie d'isoler le problème...

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2005
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    J'en ai vraiment plusieurs car les solution que je trouve ne font que repousser le probleme plus loins.

    Mais l'exception qui me pose le plus de probleme est la circular reference.

    En effet, j'essaie de serialiser ma classe nhibernate. Et comme donnée dans le code en exemple au dessus. Dans location j'ai une Ilist qui contient ma liste de players ayant cette location et dans mon joueurs j'ai ma Location.

    Donc la serialization ne passe car ca tourne en boucle. Pour contrer ca j'utilise des [xmlignore] sur les champs mais c'est vraiment du bricolage. Jâimerais quelques choses de plus efficace...

  4. #4
    Membre averti

    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par Ezekhiel
    J'en ai vraiment plusieurs car les solution que je trouve ne font que repousser le probleme plus loins.

    Mais l'exception qui me pose le plus de probleme est la circular reference.

    En effet, j'essaie de serialiser ma classe nhibernate. Et comme donnée dans le code en exemple au dessus. Dans location j'ai une Ilist qui contient ma liste de players ayant cette location et dans mon joueurs j'ai ma Location.

    Donc la serialization ne passe car ca tourne en boucle. Pour contrer ca j'utilise des [xmlignore] sur les champs mais c'est vraiment du bricolage. Jâimerais quelques choses de plus efficace...
    J'ai exactement le même souci et cela m'intéresserai de savoir à minima comment tu utilises stp les XmlIgnore pour bloquer les references en boucle sur les objets.
    Merci

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 51
    Points : 35
    Points
    35
    Par défaut Et alors quel est ton resultat ?
    Si tu peux mettre si tu arrivais a faire tout marcher: la solution.....

Discussions similaires

  1. [AXIS][WEB SERVICES] .xsd
    Par cosmos38240 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 16/07/2004, 15h55
  2. [web service] pb interoperabilité?
    Par david42 dans le forum Services Web
    Réponses: 3
    Dernier message: 02/03/2004, 14h01
  3. [WebService]Fichier Java et WSDL associé pour Web Services
    Par P4_le_requin_breton dans le forum Services Web
    Réponses: 9
    Dernier message: 23/02/2004, 12h55
  4. [JBuilder][Web Services] à partir de quelle version?
    Par sicard_51 dans le forum JBuilder
    Réponses: 2
    Dernier message: 25/08/2003, 12h54
  5. [Kylix] problème web service kylix
    Par RezzA dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2003, 14h50

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