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

Services Web Discussion :

Méthodes et Services


Sujet :

Services Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut Méthodes et Services
    Bonjour,

    Je souhaiterez pouvoir afficher la ligne courante de mon DataGrid qui affiche des données récupérées dans une base SQL, pour cela j'ai crée un Wcf Service et ajouté un DataContract permettant de Serializer les informations que je désire :

    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
    [DataContract]
        public partial class Personne
        {
                [DataMember]
                public int CODE_UTIL { get; set; }
                [DataMember]
                public string NOM_UTIL { get; set; }
                [DataMember]
                public string PRENOM_UTIL { get; set; }
                [DataMember]
                public double SALAIRE_UTIL { get; set; }
                
                [??]   
                public override string ToString()
                {
                    return CODE_UTIL + ";" + NOM_UTIL + ";" + PRENOM_UTIL + ";" + SALAIRE_UTIL;
                }
    Le problème, étant que ma ligne affichée après sélection n'a pas de ToString() attribué, je souhaiterais donc le rajouter dans mon DataContract, mais ce n'est pas possible.
    Cela marche très bien lorsque je rajoute mon ToString() directement dans mon "Reference.cs", mais à chaque rebuild du service, celui ci saute directement du au manque de sa déclaration.

    Auriez-vous une solution ?

    Merci d'avance !

    Edit : http://www.developpez.net/forums/d11...objets-resolu/
    J'ai suivi les indications de réponse, mais celles-ci ne passent pas dans mon cas avec le ToString()

    Edit2 : En rajoutant directement le ToString() dans mon "Reference.cs" la méthode passe et l'exécution marche, mais à chaque Update de mon service, celle-ci disparait suite à la regénération, serait-il possible de la bloquer "au pire" ?

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Un DataContract, comme le nom l'indique, c'est pour les données. C'est sensé être indépendant de la plate-forme, donc normal que les méthodes ne passent pas.

    Heureusement WCF est bien fait, et les classes générées par le proxy sont des classes partielles. Tu peux donc rajouter une classe Personne à ton projet avec ça (Remplace WpfApplication1.ServiceReference1 par le namespace du proxy) :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    namespace WpfApplication1.ServiceReference1
    {
        public partial class Personne
        {
            public override string ToString()
            {
                return base.ToString();
            }
        }
    }

    Et voilà ! Ça va compléter ta classe proxy, et elle se sera pas effacée à chaque update du service.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    J'ai suivi ton conseil, mon programme marche toujours correctement pour l'affichage des personnes dans ma DataView, mais le ToString() pose toujours problème.

    http://dumpt.com/img/files/octxm95smx8z43husj74.jpg

    Le passage ne se fait même pas dans ToString() (Vérifié avec System.Diagnostics.Debug).

    Mon code changé :

    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
     
    namespace AnnuaireEskuel.ServiceReference1
    {
        [Serializable]
        public class Personne
        {
            private int CODE_UTIL { get; set; }
            private string NOM_UTIL { get; set; }
            private string PRENOM_UTIL { get; set; }
            private double SALAIRE_UTIL { get; set; }
     
            public Personne() { }
            public Personne(string nom, string prenom, double salaire) { NOM_UTIL = nom; PRENOM_UTIL = prenom; SALAIRE_UTIL = salaire; }
     
            public override string ToString()
            {
                Debug.WriteLine("---Accès à AnnuaireEskuel.ServiceReference1.Personne.ToString()---");
                return CODE_UTIL + ";" + NOM_UTIL + ";" + PRENOM_UTIL + ";" + SALAIRE_UTIL;
            }
        }
    }
    Je ne vois vraiment pas d'où ça peut venir, mes projets ont tous été rebuildé, et le ServiceReference updaté.

    Merci de ton aide !

    Edit : http://dumpt.com/img/files/cdwbd0s5tna99n3m3ku5.jpg
    Pour confirmer

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    Je viens de rajouter mes DataContract, DataMembers, toujours un soucis, mais c'est un conflit de classes, une "Personne" pour mon model commun, celle que j'aimerais utiliser partout, et la classe "Personne" du coup directement en [DataContract] dans le IService.

    Laquelle utiliser, ce n'est pas possible de prendre ma classe Personne de mon dossier "Metier" ?

    Désolé d'avance pour le double post mais pas de bouton edit, j'ai pas compris

  5. #5
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Il y a une option : si tu crée une DLL, que tu y mets la classe personne et qu'elle est référencée par le client et le serveur, c'est la même classe qui va être utilisée (si l'option "Reuse types in all referenced assemblies" est cochée dans la config de add serice reference)).

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    Je crois que j'avais oublié d'importer ma DLL du Model dans mon client, je vais voir ça, encore merci pour ton aide.

    Edit : Ca ne passe pas, la librairie de mon Model n'est pas compatible Silverlight, et j'ai toujours ce même problème de ToString() qui devient assez énervant.
    http://dumpt.com/img/files/fzasb9yc27gzisdxbhbz.jpg

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/01/2015, 19h34
  2. Méthode de service web.
    Par egautier18 dans le forum C#
    Réponses: 8
    Dernier message: 13/11/2013, 16h26
  3. Comment passer un gros tableau à une méthode de service wcf ?
    Par EmacLi dans le forum Windows Communication Foundation
    Réponses: 3
    Dernier message: 22/03/2011, 11h18
  4. Réponses: 0
    Dernier message: 06/06/2008, 17h03
  5. Appel Méthodes web services
    Par prince_antonio dans le forum Services Web
    Réponses: 13
    Dernier message: 22/02/2008, 16h30

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