Mysql
 sql >> Datenbank >  >> RDS >> Mysql

C# Entity Framework:Schlüsselwort nicht unterstützt:„port“

Das Argument des verwendeten Basis-DbContext Konstruktor heißt nameOrConnectionString . Daher unterstützt es einen Namen einer Verbindungszeichenfolge aus der Konfigurationsdatei oder wie in Ihrem Fall eine tatsächliche Verbindungszeichenfolge.

Das Problem bei letzterem ist, dass es nicht erlaubt, den Anbieternamen anzugeben wie bei ersterem, das aus der Konfiguration stammt, in diesem Fall verwendet EF das in der defaultConnectionFactory angegebene Konfigurationselement, das in Ihrem Fall System.Data.Entity.Infrastructure.SqlConnectionFactory ist , mit anderen Worten - Sql Server , daher der port nicht unterstützte Ausnahme.

Es gibt mehrere Möglichkeiten, das Problem zu beheben.

(A) Ändern Sie die defaultConnectionFactory Konfiguration:

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

(B) Verwenden Sie eine benannte Konfigurationsverbindungszeichenfolge und geben Sie den Anbieter explizit an:

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

und ändern Sie den Konstruktor in

public MyDB()
{
    // ...
}

oder wenn sich der Name von Ihrem DbContext unterscheidet abgeleiteter Klassenname:

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

(C) Verwenden Sie DbConfigurationTypeAttribute :

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