sql >> Base de Datos >  >> RDS >> Mysql

C# Entity Framework:palabra clave no admitida:'puerto'

El argumento de la base utilizada DbContext constructor se llama nameOrConnectionString . Por lo tanto, admite un nombre de una cadena de conexión del archivo de configuración o, como en su caso, una cadena de conexión real.

El problema con este último es que no permite especificar el nombre del proveedor como con el primero proveniente de la configuración, en cuyo caso EF usa el especificado en defaultConnectionFactory elemento de configuración, que en su caso es System.Data.Entity.Infrastructure.SqlConnectionFactory , en otras palabras - Servidor Sql , de ahí el port excepción no admitida.

Hay varias formas de solucionar el problema.

(A) Cambie el defaultConnectionFactory configuración:

<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>

(B) Utilice la cadena de conexión de configuración con nombre y especifique explícitamente el proveedor:

<connectionStrings>
    <add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123" />
</connectionStrings>

y cambie el constructor a

public MyDB()
{
    // ...
}

o si el nombre es diferente a su DbContext nombre de clase derivado:

public MyDB() : base(connection_string_name)
{
    // ...
}

(C) Use DbConfigurationTypeAttribute :

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyDB : DbContext
{
    // ...
}