Argument použitého základu DbContext
konstruktor
se nazývá nameOrConnectionString
. Podporuje tedy název připojovacího řetězce z konfiguračního souboru, nebo jako ve vašem případě skutečný připojovací řetězec.
Problém s pozdější je, že neumožňuje zadat jméno poskytovatele stejně jako u prvního pocházejícího z konfigurace, v takovém případě EF používá tu uvedenou v defaultConnectionFactory
konfigurační prvek, kterým je ve vašem případě System.Data.Entity.Infrastructure.SqlConnectionFactory
, jinými slovy - Sql Server , tedy port
nepodporovaná výjimka.
Existuje několik způsobů, jak problém vyřešit.
(A) Změňte defaultConnectionFactory
konfigurace:
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>
(B) Použijte pojmenovaný konfigurační připojovací řetězec a určete explicitně poskytovatele:
<connectionStrings>
<add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123" />
</connectionStrings>
a změňte konstruktor na
public MyDB()
{
// ...
}
nebo pokud se název liší od vašeho DbContext
odvozený název třídy:
public MyDB() : base(connection_string_name)
{
// ...
}
(C) Použijte DbConfigurationTypeAttribute
:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyDB : DbContext
{
// ...
}