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