L'argomento della base usata DbContext
costruttore
si chiama nameOrConnectionString
. Quindi supporta un nome di una stringa di connessione dal file di configurazione, o come nel tuo caso una stringa di connessione effettiva.
Il problema con il successivo è che non consente di specificare il nome del provider come per il primo proveniente dalla configurazione, nel qual caso EF utilizza quello specificato in defaultConnectionFactory
elemento di configurazione, che nel tuo caso è System.Data.Entity.Infrastructure.SqlConnectionFactory
, in altre parole - Sql Server , da qui la port
eccezione non supportata.
Esistono diversi modi per risolvere il problema.
(A) Modificare il defaultConnectionFactory
configurazione:
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>
(B) Utilizzare la stringa di connessione di configurazione denominata e specificare esplicitamente il provider:
<connectionStrings>
<add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123" />
</connectionStrings>
e cambia il costruttore in
public MyDB()
{
// ...
}
o se il nome è diverso dal tuo DbContext
nome della classe derivata:
public MyDB() : base(connection_string_name)
{
// ...
}
(C) Utilizzare DbConfigurationTypeAttribute
:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyDB : DbContext
{
// ...
}