Mysql
 sql >> Database >  >> RDS >> Mysql

Impossibile connettersi a MySQL da Visual Studio 2015

Affinché VS 2015 si connetta a MySql è necessario utilizzare una versione successiva delle librerie MySql. Anche se sembra una risposta piuttosto semplice, in tutta onestà ho riscontrato diversi problemi lungo la strada. Con questo in mente, scriverò il processo 1 che ha funzionato costantemente per me fino a far funzionare EF con MySql e VS2015. Quindi, senza ulteriori indugi, ecco i passaggi che ho intrapreso per farlo funzionare.

1) Assicurati che l'installazione del connettore MySql sia aggiornata

2) Crea il tuo progetto web

3) Apri Nuget

4) Installa Entity Framework

5) Cerca MySql

6) Installa MySql.Data

7) Installa MySql.Data.Entity

8) Installa MySql.Data.Entities

9) Installa MySql.Web

10) Vai ai riferimenti del progetto ed elimina MySql.Data.Entity.EF6

11) Verificare le versioni delle librerie MySql.Data e MySql.Web. Se sono sotto 6.9.6 eliminali anche tu

12) Aggiungi un nuovo riferimento navigando nel percorso di installazione del connettore mysql per la tua versione del framework .NET (il mio è C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5) e prendendo MySql.Data.Entity.EF6.dll (la mia versione è 6.9.6, tienilo a mente quando cambieremo web.config in seguito)

13) Se anche le altre librerie erano versioni precedenti, aggiungi i riferimenti ad esse navigando nella cartella dei pacchetti nella tua soluzione e prelevando i file dalle rispettive cartelle. Normalmente non devo farlo.

14) Ora il Web.config dovrà essere modificato. Il primo passaggio consiste nel sostituire la sezione del framework dell'entità con questo codice (modifica il numero di versione con la versione corrente. Tieni presente che ho trovato questo snippet sul Web un paio di settimane fa e non ho il link originale. Mi scuso con l'originale poster di queste informazioni.)

<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>
</entityFramework>

15) Assicurati che la tua sezione DbProviderFactories corrisponda

<DbProviderFactories>
  <remove invariant="MySql.Data.MySqlClient" />
  <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>

16) Salva e costruisci

Non sono sicuro di quanti di questi passaggi siano effettivamente necessari, ma dopo averlo finalmente ottenuto una volta ho dovuto effettivamente svolgere un po' di lavoro e non ho avuto il tempo di restringere ulteriormente le cose. Spero che questo ti faccia muovere.

PS Se dopo tutto ciò si passa attraverso la procedura guidata e scompare prima che ti mostri le tabelle nel database da cui creare entità, potrebbe essere uno dei tre problemi che ho riscontrato lungo il percorso. Impossibile contattare il server del database. L'utente non dispone delle autorizzazioni necessarie sul database. La versione errata di MySql.Data.Entity.EF6 è stata aggiunta come riferimento o il numero di versione è errato in web.config. Se prendo questo file dalla directory packages della mia soluzione, mi imbatto spesso in questo problema con la procedura guidata interrotta senza messaggi di errore. Prenderlo dalla directory di installazione di MySql ha funzionato bene per me ogni volta.