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

VB.NET Discussion :

erreur de conversion linq qui m'echappe


Sujet :

VB.NET

  1. #1
    zzozo32456
    Invité(e)
    Par défaut erreur de conversion linq qui m'echappe
    bonjour a tous,
    j'ai voulu récemment m'essayer a linq to entity sur un projet de développement web et la je suis a deux doigt de faire marche arrière. J'ai des erreurs très bizarres qui apparaissent sans prévenir du jour au lendemain c'est a n'y rien comprendre. La dernière en date qui est en train de me faire perdre ma matinée.
    Une erreur s'est produite lors d'une opération de lecture effectuée à partir du lecteur de données du fournisseur de magasins. Pour plus de détails, consultez l'exception interne.
    innerexception:
    Erreur de conversion du type de données nvarchar en bigint.
    en fait j'ai une requete linq toute simple qui récupere un entier dans l'url et qui me sert a récuperer le nom associé dans une base de donnée.
    J'ai un model .edmx avec une table user qui contient un numuser en int32 un prenomuser et un nom user en string.
    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim varApprenant As Int32 = CType(Request.QueryString("User"), Int32)
           Dim oApprenant As Object = (From user In model.TUser
                                  Where user.NumUser = varApprenant
                                  Select user.NomUser And user.PrenomUser).First()
                LabelApprenant.Text = String.Concat(oApprenant.NomUser, oApprenant.PrenomUser)
    Qu'est ce que je loupe? Je ne vois pas d’où peut venir cette erreur de conversion...

  2. #2
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Bonjour,

    Sur quelle ligne est générée ton erreur ?
    As tu fait du pas à pas pour vérifier tes valeurs ?

  3. #3
    zzozo32456
    Invité(e)
    Par défaut
    slt merci d'avoir pris un peu de temps pour moi,
    en fait je suis en mode debug, visual studio me surligne la ligne ou j'ai
    oApprenant As Object = (From user In model.TUser
    Where user.NumUser = varApprenant
    Select user.NomUser And user.PrenomUser).First()
    La variable "varapprenant" semble ok. Au moment de mon dernier test elle contenait bien un chiffre.
    La conversion ctype à l'air de se passer sans problème. c'est vraiment la requête linq qui a l'air de merder...

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    As-tu essayés de caster user.NumUser et varApprenant directement dans la requête Linq ?

    Voir d'utiliser un equals plutot qu'un = ?

    Tu peux aussi virer le select sur les 2 champs spécifique et faire une déclaration de l'objet oApprenant de même type que ce contient model.TUser

    J'utiliserais aussi plutot un String.Format à la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.Concat(oApprenant.NomUser, oApprenant.PrenomUser)
    Voir tant qu'on y est une fonction ou une propriété readonly ajoutée à l'objet oApprenant retournant la chaîne directement!

  5. #5
    zzozo32456
    Invité(e)
    Par défaut
    merci sinople toi aussi pour avoir pris un peu de temps.
    maintenant ca à l'air de fonctionner.
    J'ai modifie la declaration d'objet comme tu me l'a conseiller et au passage reecris la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           Dim Apprenant As TUser = (From oUser In model.TUser
                                               Where oUser.NumUser = varApprenant
                                               Select oUser).FirstOrDefault()
    Pour ce qui est du cast directement dans la requete j'avais une belle exception, je m'en souviens plus exactement mais c'est pour ca que j'ai du passer par une variable intermediaire.
    Bon pour le coup j'ai un peu de mal a comprendre d'ou cette erreur est sortie mais bon maintenant que ca marche je vais pas y passer plus de temps ou je risque de me faire engueuler.
    Merci encore a vous 2 bonne fin d'aprem

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Erreur de conversion qui ne devrait pas être
    Par Hobbi1 dans le forum VB.NET
    Réponses: 12
    Dernier message: 12/09/2014, 17h58
  2. Erreur de conversion
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 01/08/2005, 16h23
  3. Erreur de conversion de type Null en String
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/07/2005, 15h25
  4. erreur de valaur nulle..qui ne l'est pas :-(
    Par bachilbouzouk dans le forum ASP
    Réponses: 7
    Dernier message: 20/04/2005, 08h52
  5. Erreur de conversion int to socklen_t
    Par def_jam_vendetta dans le forum C++
    Réponses: 6
    Dernier message: 04/03/2005, 10h53

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