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

Silverlight Discussion :

appel manqué à ma fonction quand mon objet passé en paramètre est trop long


Sujet :

Silverlight

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut appel manqué à ma fonction quand mon objet passé en paramètre est trop long
    Bonjour,

    J'utilise le code suivant coté serveur pour créer un nouveau pays:

    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
      [Invoke()]
            public string AddCountry(CountrysTbl myCountry)
            {
                try
                {
                    if ((myCountry.EntityState != EntityState.Detached))
                    {
                        this.ObjectContext.ObjectStateManager.ChangeObjectState(myCountry, EntityState.Added);
                    }
                    else
                    {
                        this.ObjectContext.CountrysTbl.AddObject(myCountry);
                    }
                    //this.ObjectContext.CountrysTbl.AddObject(myCountry);
                    this.ObjectContext.SaveChanges();
                    return "";
     
                }
                catch (Exception e)
                {
                  if (e.InnerException.Message.Contains("Cannot insert duplicate key row in object 'dbo.CountrysTbl' with unique index 'UK_CountrysTbl'. The duplicate key value is"))
                    {
                        return "ce nom de Country existe déjà";
                    }
                    else
                    {
                        return e.InnerException.Message ;               }
     
                }
            }
    Je retourne, soit un string vide "", soit une chaine de caractères qui reprend l'erreur.

    J'appelle coté client ce code comme suit:

    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
     {...
                InvokeOperation<string> iopAdd = _ctx.AddCountry(myNewCountry);
                iopAdd.Completed += new System.EventHandler(iopAdd_Completed);
     
            }
     
            void iopAdd_Completed(object sender, System.EventArgs e)
            {
                InvokeOperation<string> iop = sender as InvokeOperation<string>;
                string ret = iop.Value;
     
                if (!(ret == ""))
                { MessageBox.Show(ret); }
                else
                { MessageBox.Show("Country sauvé"); }
            }
    Quand l'insertion se passe bien je reçois le message "Country sauvé" et sinon je reçois le message de l'erreur.

    Mon problème, c'est si j'appelle ma fonction "AddCountry" avec un "myNewCountry" qui comprend par exemple un nom trop long (ex. 45 caractères alors que le nom d'un pays comprend maximum 40 caractères). A ce moment je ne passe même pas dans ma fonction AddCountry, par contre je passerai par "iopAdd_Completed" avec une "iop.Value" qui est nulle, et ça me crée donc une erreur...

    J'aurais voulu qu'il appelle ma fonction, qu'il tente de créer mon pays en base de données, qu'il échoue car le nom est trop long et qu'il me retourne le message adéquat...

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Sans doute un problème de taille de message échangés avec WCF: il faut que tu augmentes la valeur des paramètres (comme tu est en WCF RIA Services, tu peux le faire en étendant la classe de DominContext)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Sans doute un problème de taille de message échangés avec WCF: il faut que tu augmentes la valeur des paramètres (comme tu est en WCF RIA Services, tu peux le faire en étendant la classe de DominContext)
    Peux-tu m'en dire plus car là je suis un peu(même tout à fait) dans le brouillard

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Regarde le post de tymberwyld ici (3ème en partant de la fin): http://forums.silverlight.net/forums/t/159029.aspx

    Ou ici aussi: http://blogs.objectsharp.com/cs/blog...rvices-rc.aspx

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Ca peut pas venir d'un champ trop petit en base sinon?
    Genre faire rentrer 40caractères dans un nvarchar(20)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Ca peut pas venir d'un champ trop petit en base sinon?
    Genre faire rentrer 40caractères dans un nvarchar(20)
    oui, comme je tentais de l'expliquer, c'est quand je tente de rentrer plus de caractères que ce qui est prévu en base de données. Quand je rentre un pays de 40 caractères, ça passe, avec 41, j'ai l'erreur.

    J'ai même testé sur une propriété de 15 caractères, 15 ça passe, 16 ça bloque.

    avec 15 mon appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InvokeOperation<string> iopAdd = _ctx.AddCountry(myNewCountry);
    m'amène en debug (puisque j'ai mis un point d'arrêt) dans ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public string AddCountry(CountrysTbl myCountry)
    alors qu'avec 16 je n'y passe pas !
    C'est un peu comme s'il savait que ma propriété était limité à 15 caractères et que donc il ne fait pas l'appel s'il y a plus de caractères...
    Mais moi ça ne m'arrange pas car c'est ma fonction qui devrait me retourner le message d'erreur.

Discussions similaires

  1. [POO] Appel d'une fonction d'un objet
    Par dragonfly dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/12/2009, 13h49
  2. Réponses: 2
    Dernier message: 20/06/2007, 12h12
  3. Mon script passe une fois de trop dans la boucle
    Par Stessy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/08/2006, 11h57
  4. Réponses: 20
    Dernier message: 15/05/2006, 11h47
  5. [C#]Quand mon objet axWebBrowser est-il supprimé ?
    Par Kcirtap dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/10/2005, 10h16

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