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

ASP.NET MVC Discussion :

EntityFramework ou MySQL [Débutant]


Sujet :

ASP.NET MVC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 79
    Points : 46
    Points
    46
    Par défaut EntityFramework ou MySQL
    Bonjour,

    Je démarre un nouveau projet personnel en ASP.NET MVC. J'aimerais utiliser une base de donnée MySQL, mais étant donné que je n'ai pas de licence pour Visual Studio Pro, j'utilise la version Express. Donc je ne peux pas utiliser une base de donnée MySQL avec l'EntityFramework.

    J'ai trouver une solution sur le net:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    using MySql.Data.MySqlClient;
    using System.Data;
    using System;
    using System.Data.Common;
    class DbHelper
    {
        public MySqlConnection con = new MySqlConnection("server=localhost;userid=root;password=root;database=dothrmproxy");
    // ConnectionString
        public MySqlCommand cmd;
        public MySqlDataAdapter Mdr;   
     
        public int Execute(string query)
        {
            int i = 0;
            try
            {
                con.Open();
                cmd = new MySqlCommand(query, con);
                i = cmd.ExecuteNonQuery();
            }
            catch
            {
                i = -1;
            }
            finally
            {
                con.Close();
            }
            return i;
        }
        public int Execute(string commandtext,object [,]parameter,CommandType ct)
        {
            int i = 0;
            try
            {
                con.Open();
                cmd = new MySqlCommand(commandtext, con);
                cmd.CommandType = ct;
                MySqlParameter oParameter;
                for (int j = 0; j < parameter.Length / 2; j++)
                {
                    oParameter = cmd.CreateParameter();
                    oParameter.ParameterName = parameter[j, 0].ToString();
                    oParameter.Value = parameter[j, 1];
                    cmd.Parameters.Add(oParameter);
                }
                i = cmd.ExecuteNonQuery();
            }
            catch
            {
                i = -1;
            }
            finally
            {
                con.Close();
            }
            return i;
        }
        public DataTable GetTable(string query)
        {
            DataTable result = new DataTable();
            try
            {
                Mdr = new MySqlDataAdapter(query, con);
                if (con.State == ConnectionState.Closed)
                    con.Open();
                Mdr.Fill(result);
                return result;
            }
            catch (Exception err)
            { return result; }
            finally
            {
                con.Close();
            }
        }
        public DataSet GetSet(string query)
        {
            DataSet result = new DataSet();
            try
            {
                Mdr = new MySqlDataAdapter(query, con);
                if (con.State == ConnectionState.Closed)
                    con.Open();
                Mdr.Fill(result);
                return result;
            }
            catch (Exception err)
            { return result; }
            finally
            {
                con.Close();
            }
        }
     
    }
    Cependant, je me demandais si c'était une bonne chose de procéder de cette façon ou bien je devrais absolument utiliser une base de données SQL Server pour utiliser le EntityFramework étant donnée que j'utilise la version Express?

    Est-ce que je vais me limiter en utilisant une base MySQL? Est-ce que mon code risque d'être moins maintenable à long terme?

    J'ai besoin de conseil de pro! Merci!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tes questions sont incohérentes

    Pour utiliser Entity Framework avec une base de données d'un SGBDR il faut que tu disposes du provider permettant de le faire. Pour SQL Server c'est fourni par Microsoft pour MySQL par contre il faut télécharger Connector /Net.

    Version Express ou non de VS tu peux utiliser EF sans problèmes.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 79
    Points : 46
    Points
    46
    Par défaut
    Merci de ta réponse, j'ai décider d'y aller avec Sql server pour facilité les choses.

    Mais j'ai de la difficulté à utiliser une base de donnée existante avec les rôles, membership, etc...

    J'ai créé un nouveau projet MVC 4 - Basic.
    J'ai ensuite ajouté dans mon dossier Models un nouvel élément "ADO.NET Entity Data Model" Qui est connecté à ma base donnée.
    Il a donc ajouté dans mon web.config ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <add name="PortalTestEntities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=JOCE-PC\SQLEXPRESS;initial catalog=PortalTest;persist security info=True;user id=sa;password=12345;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    Je veux maintenant utiliser cette base de donnée pour les membership, rôles, etc...

    J'ai donc changé les connectionstrings dans les provider pour ceci:
    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
    <profile defaultProvider="DefaultProfileProvider">
          <providers>
            <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="PortalTestEntities" applicationName="/" />
          </providers>
        </profile>
        <membership defaultProvider="DefaultMembershipProvider">
          <providers>
            <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="PortalTestEntities" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
          </providers>
        </membership>
        <roleManager defaultProvider="DefaultRoleProvider">
          <providers>
            <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="PortalTestEntities" applicationName="/" />
          </providers>
        </roleManager>
    J'ai ensuite ouvert dans mon navigateur la configuration ASP.NET.
    Je suis aller dans l'onglet "Fournisseur" et j'ai définit le Fournisseur d'appartenances à DefaultMembershipProvider et Fournisseur de rôles à DefaultRoleProvider.
    Je vais ensuite dans l'onglet Sécurité et j'ai cette erreur "The entity type User is not part of the model for the current context."

    J'ai pourtant lu sur le net qu'il devrait créer les tables nécessaires automatiquement...

    Que dois-je faire?

    Merci d'avance!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Tu utilises la chaîne de connexion avec les métadonnées qui est pour EF. Il faut que tu te crées une chaîne de connexion sans ces métadonnées en plus de celle déjà existante. C'est cette nouvelle chaîne qu'il faut utiliser.

    Si tu ne veux pas ajouter une nouvelle chaîne de connexion alors il faut passer par un membership provider personnalisé qui s’occupera de récupérer la partie qui nous intéresse dans la chaîne actuelle (c'est à dire sans les métadonnées).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 79
    Points : 46
    Points
    46
    Par défaut
    Donc si je comprends bien, je dois avoir une chaîne de connexion pour utiliser le Database-first ".edmx" et une autre pour les providers?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par joce21 Voir le message
    Donc si je comprends bien, je dois avoir une chaîne de connexion pour utiliser le Database-first ".edmx" et une autre pour les providers?
    oui

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/08/2014, 16h23
  2. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09
  3. Probleme C++Builder et Mysql
    Par noname dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 13h40
  4. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 18h18
  5. [Kylix] Pb connection à Mysql
    Par Anonymous dans le forum EDI
    Réponses: 3
    Dernier message: 25/04/2002, 15h26

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