Impossible de convertir les types string en Int. en WCF RIA SERVICES
-
Thursday, March 08, 2012 7:41 PM
salut chers developpeurs.
Bloqué sur developpement d'une application . je viens vous demander de l'aide.
Ja developpe une application Silverlight 4 ( C#) avec Du WCF RIA services ( Visual studio 2010), et comme vous le savez la puissance du RIA a generé le metier et maon dataContext.
a partir le la couche cliente, je veux ajouter de nouvelles données dans ma base de donnée precisement la table "Paysan".
je recupere les données saisies dans les TextBox et autres pour les convertir aux types precisés dans la source de donnée et valider.
Voici comment je procede :
private void Button_Click(object sender, RoutedEventArgs e)
{
// remplissage des propriétés de mon contexte de donnée.
if (ChekBoxAcceptation.IsChecked == true)
{ // instanciation du dataContext.
FarmerDomainContext paysanCtxt = new FarmerDomainContext();
//instanciation de la table "paysan"
paysan payns = new paysan();
try {
payns.ID = 01;
payns.nom_paysan = TbxNOM.Text;
payns.contact_paysan = TbxContact.Text;
payns.datnaiss_paysan = Convert.ToString(datePickerDateNaisse.SelectedDate);
payns.matricul_paysan = "005mk41";
payns.mail_paysan = TbxMail.Text;
payns.photo_paysan =;
payns.cultur_pratique = Convert.ToString(CmbBXCULTURE.SelectedItem);
payns.superficie = CoBxSUPERFICIE.Text;
payns.cooperativeID
payns.cooperative=new cooperative();
paysanCtxt.paysans.Add(payns);
paysanCtxt.SubmitChanges();
}
catch
{ throw; }
}
else
{ MessageBox.Show(" veillez accepter les conditions d'adhésion !"); }
----------------------
et lorsque je clique sur le boutton Valider, je recoi cette erreur :
Impossible d'effectuer un cast de l'objet de type 'System.Int32' en type 'System.String'.
à System.ComponentModel.DataAnnotations.StringLengthAttribute.IsValid(Object value)
à System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext)
à System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext)
à System.ComponentModel.DataAnnotations.Validator.TryValidate(Object value, ValidationContext validationContext, ValidationAttribute attribute, ValidationError& validationError)
à System.ComponentModel.DataAnnotations.Validator.GetValidationErrors(Object value, ValidationContext validationContext, IEnumerable`1 attributes, Boolean breakOnFirstError)
à System.ComponentModel.DataAnnotations.Validator.TryValidateProperty(Object value, ValidationContext validationContext, ICollection`1 validationResults)
à System.ServiceModel.DomainServices.Client.ValidationUtilities.ValidateProperty(Object value, ValidationContext validationContext, List`1 validationResults, String memberPath)
à System.ServiceModel.DomainServices.Client.ValidationUtilities.ValidateObjectRecursive(Object instance, String memberPath, ValidationContext validationContext, List`1 validationResults)
à System.ServiceModel.DomainServices.Client.EntityChangeSet.Validate(ValidationContext validationContext)
à System.ServiceModel.DomainServices.Client.DomainContext.ValidateChangeSet(EntityChangeSet changeSet, ValidationContext validationContext)
à System.ServiceModel.DomainServices.Client.DomainContext.SubmitChanges(Action`1 callback, Object userState)
à System.ServiceModel.DomainServices.Client.DomainContext.SubmitChanges()
à NETFARMER_SL.Inscription.Button_Click(Object sender, RoutedEventArgs e)
à System.Windows.Controls.Primitives.ButtonBase.OnClick()
à System.Windows.Controls.Button.OnClick()
à System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
à System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
à MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName, UInt32 flags)
-------- fin erreur----------
A partir de la je me suis dir qu'il ya vraiment un probleme de conversion, pour cela j'ai recopié les types precisés dans le fichier contenant lesMetaDonées ( car je crois que dans ce fichier, on retrouve les types precisés dans la base de donnée) , et apres cela , je reéxécute et l'erreur persiste.
Ensuite j'ai mis en commentaire les propriétés qu'on devrai convertir en Int pour eviter les erreurs de conversions et je laisse seulement que les propriétés de tyupes string, je reexecute, et la encore, l'erreur persiste.
Je dois déposer ce projet dans Deux jours : (Inquiétude persiste !)
je tourne donc vers vous pour solliciter votre aide Salvatrice. vraimemt Slvatrice !Pour ceux qui ne comprenent pas mo explication , qu'il me signale cela.
NB: Pour cequi concerne le type des propriérés "
datnaiss_paysan
par erreur j'ai mis string lors de la conception de la base de donnée. Mais je cois que j'ai adopté ça comme tel car j'ai convertie la Date du dateTPicker en String :
payns.datnaiss_paysan = Convert.ToString(datePickerDateNaisse.SelectedDate);
je pense que cela n'est aussi pas la soucre de l'erreur.
Merci pour votre aide.
- Edited by Hamed Ouattara Thursday, March 08, 2012 7:49 PM
All Replies
-
Friday, March 09, 2012 8:06 AMModerator
Bonjour,
Regardez dans vos objets du domaine (côté client) si vous ne voyez pas un attribut de type [StringLength] qui se trouve sur une propriété de type Int32.
Cordialement
Gilles TOURREAU - MVP C#
Architecte logiciel/Consultant/Formateur Freelance
Blog : http://gilles.tourreau.fr
- MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
- MCITP : SQL Server 2008 Developper
- MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0- Proposed As Answer by Patrice ScribeMVP, Moderator Friday, March 09, 2012 10:15 AM
- Marked As Answer by Ciprian DuduialaOwner Friday, March 23, 2012 7:39 AM
-
Friday, March 09, 2012 10:19 AMModerator
Et dans ce cas utiliser plutôt un attribut Range (http://msdn.microsoft.com/fr-fr/library/system.componentmodel.dataannotations.rangeattribute.aspx) pour indiquer les valeurs minimales/maximales que vous voulez...
La "longueur" d'un nombre en tant que chaine de caractère n'a pas vraiment de sens (-100, 0.01 et 1e90 ont tous la même longueur mais leurs valeurs n'ont rien à voir).
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
- Edited by Patrice ScribeMVP, Moderator Friday, March 09, 2012 10:24 AM
- Proposed As Answer by Ciprian DuduialaOwner Friday, March 09, 2012 11:24 AM
- Marked As Answer by Ciprian DuduialaOwner Friday, March 23, 2012 7:39 AM
-
Friday, March 09, 2012 6:57 PM
Merci pour votre aide, Tant des experts comme vous existent, la techonologie serra toujours au rendez_vous .
j'ai retiré tous les [StringLength] et quand je tente d'enregistrer, il y a une nouvele alerte, voici le contenu de cette alerte :
Submit operation failed validation. Please inspect Entity.ValidationErrors for each entity in EntitiesInError for more information.
à System.ServiceModel.DomainServices.Client.OperationBase.Complete(Exception error)
à System.ServiceModel.DomainServices.Client.SubmitOperation.Complete(OperationErrorStatus errorStatus)
à System.ServiceModel.DomainServices.Client.DomainContext.<>c__DisplayClassb.<SubmitChanges>b__3(Object )Comment faire ?
l'erreur de conversion est resolue grace a votre reponse. merci !
-
Saturday, March 10, 2012 9:57 AMModerator
Bonjour,
Lors de la levée de l'exception, Visual Studio doit vous afficher un message d'erreur. Dans ce message, il y a un lien hypertexte "Detail". Cliquez dessus pour voir les détails de l'erreur et en particulier la propriété "EntitiesInError" qui contient les informations concernant les entités en erreur.
Cordialement
Gilles TOURREAU - MVP C#
Architecte logiciel/Consultant/Formateur Freelance
Blog : http://gilles.tourreau.fr
- MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
- MCITP : SQL Server 2008 Developper
- MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0- Marked As Answer by Hamed Ouattara Saturday, March 10, 2012 7:51 PM

