Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

C# Entity Framework:Palavra-chave não suportada:'port'


O argumento da base usada DbContext construtor é chamado nameOrConnectionString . Portanto, ele suporta um nome de uma string de conexão do arquivo de configuração ou, como no seu caso, uma string de conexão real.

O problema com o posterior é que ele não permite especificar o nome do provedor como no primeiro vindo da configuração, nesse caso o EF usa o especificado no defaultConnectionFactory elemento de configuração, que no seu caso é System.Data.Entity.Infrastructure.SqlConnectionFactory , em outras palavras - Sql Server , daí a port exceção não suportada.

Existem várias maneiras de corrigir o problema.

(A) Altere o defaultConnectionFactory configuração:
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>

(B) Use a string de conexão de configuração nomeada e especifique explicitamente o provedor:
<connectionStrings>
    <add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123" />
</connectionStrings>

e altere o construtor para
public MyDB()
{
    // ...
}

ou se o nome for diferente do seu DbContext nome da classe derivada:
public MyDB() : base(connection_string_name)
{
    // ...
}

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