Bonjour,
J'utilise le code suivant coté serveur pour créer un nouveau pays:
Je retourne, soit un string vide "", soit une chaine de caractères qui reprend l'erreur.
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 ; } } }
J'appelle coté client ce code comme suit:
Quand l'insertion se passe bien je reçois le message "Country sauvé" et sinon je reçois le message de l'erreur.
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é"); } }
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...
Partager