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