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

Entity Framework Discussion :

NullReferenceException sur SaveChanges avec Entity Framework et MySql


Sujet :

Entity Framework

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Par défaut NullReferenceException sur SaveChanges avec Entity Framework et MySql
    Bonjour mesdames, messieurs.

    Je suis chargé de développer une petite application de gestion de stock, sensée tourner sous Windows, en utilisant MySql.
    C'est donc tout naturellement que je me suis tourné vers l'Entity Framework.

    J'ai donc créé ma petite connexion vers la base de données, puis le modèle, et enfin généré le Sql avec la génération SSDLToMySQL.tt (VS).

    Jusqu'ici, aucun problème.

    Mais lorsque je veux ajouter une entrée dans l'une de mes tables, je me fais proprement insulter par ce bon vieux VS, qui me sort une NullReferenceException au niveau du SaveChanges.

    Voici le code que j'utilise pour tester:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                using(OrrdiEntities testEntities = new OrrdiEntities())
                {
                    Etat testEtat = new Etat();
                    testEtat.Nom = "TEST";
                    testEtat.Id = 1;
                    testEntities.AddToEtat(testEtat);
                    testEntities.SaveChanges();
                }

    Il semblerait que testEntities._Etat soit null, et que testEntities.Connection.DataBase == "";

    Pourtant, la ConnectionString générée par Visual Studio semble bonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <connectionStrings>
      <add name="OrrdiEntities" connectionString="metadata=res://*/Model.Model.csdl|res://*/Model.Model.ssdl|res://*/Model.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;User Id=root;database=orrdi;password=root&quot;" providerName="System.Data.EntityClient" />
    </connectionStrings>
    Auriez-vous une idée de la provenance du problème (qui se trouve surement entre la chaise et le clavier), et éventuellement une solution ?
    Serait-ce que parce que j'utilise Wamp pour développer ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bizarre... vérifie déjà que tu peux ouvrir la connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    testEntities.Connection.Open();
    et vérifie que la chaine de connexion est correcte (testEntities.Connection.ConnectionString)

    Vérifie aussi que tu as la dernière version du provider MySQL : le support d'Entity Framework n'était pas très au point dans les premières versions. Je sais pas si c'est mieux maintenant... En tous cas ce problème ressemble vraiment à un bug dans le provider, parce que quel que soit l'origine du problème, ça devrait sûrement pas balancer une NullReferenceException...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Par défaut
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    testEntities.Connection.Open(); //me rejète une NullReferenceException lui aussi.

    J'ai changé utilisé la surcharge de constructeur, mais j'obtiens toujours cette même exception, et la connectionString semble bonne :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    OrrdiEntities("metadata=res://*/Model.Model.csdl|res://*/Model.Model.ssdl|res://*/Model.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=\"server=localhost;User Id=root;database=orrdi;password=root\"")

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    testEntities.Connection.ServerVersion
    /*me retourne ceci : -		ServerVersion	'testEntities.Connection.ServerVersion' threw an exception of type 'System.InvalidOperationException'	string {System.InvalidOperationException}
    */

    J'ai vérifié que j'utilisais bien la dernier version du connector .net (et c'était le cas). J'ai également téléchargé et installé directement MySql sur ma machine, et stoppé le service Wamp, mais rien n'y fait.

    J'ai vérifié dans les références, et je n'en ai trouvé aucune de MySql.
    Dois-je en importer une ? (oui je pense)
    et si oui, laquelle/lesquelles ?
    v2:
    MySql.Data.dll
    MySql.Data.Entity.dll
    v4:
    MySql.Data.Entity.dll

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par fjsjp Voir le message
    J'ai vérifié dans les références, et je n'en ai trouvé aucune de MySql.
    Dois-je en importer une ? (oui je pense)
    Ce n'est pas nécessaire si le connecteur MySQL est installé dans le GAC ou que les DLL sont dans le répertoire de l'exe : ton programme n'a pas besoin de dépendre explicitement de MySQL, c'est uniquement indiqué au niveau de la configuration

    Vraiment bizarre en tous cas, j'ai jamais vu ça... j'aurais bien fait le test, mais je n'ai pas de base MySQL sous la main

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Par défaut
    Je viens de trouver une solution: Il suffit de passer en framework 4.0, je travaillais avec le 3.5.
    Il n'y a pas besoin d'ajouter de dll.

    Cependant je trouve bizarre que le dernier MySql Connector .net ne supporte que le framework 4.0

    Merci de ton aide tomlev

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

Discussions similaires

  1. Comment crée une BD sur sql server avec Entity Framework ?
    Par khadi8 dans le forum Entity Framework
    Réponses: 4
    Dernier message: 14/10/2014, 20h07
  2. Pour instancier le context avec Entity Framework
    Par aboily dans le forum Entity Framework
    Réponses: 0
    Dernier message: 26/05/2010, 06h28
  3. Problème Ajout Donnée avec Entity Framework
    Par Invité dans le forum Linq
    Réponses: 4
    Dernier message: 14/10/2009, 14h16
  4. Pb de création de modéle avec entity framework
    Par rangdalf dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 25/06/2009, 22h34
  5. Probleme de connexion avec Entities Framework
    Par gstrit dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 09/06/2009, 09h09

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