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

C# Entity Framework:parola chiave non supportata:'porta'

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
{
    // ...
}