Het argument van de gebruikte basis DbContext
constructor
heet nameOrConnectionString
. Daarom ondersteunt het een naam van een verbindingsreeks uit het configuratiebestand, of zoals in uw geval een echte verbindingsreeks.
Het probleem met de laatste is dat het niet toestaat om de providernaam te specificeren zoals met de eerste afkomstig uit de configuratie, in welk geval EF degene gebruikt die is gespecificeerd in de defaultConnectionFactory
configuratie-element, dat in uw geval System.Data.Entity.Infrastructure.SqlConnectionFactory
is , met andere woorden - Sql Server , vandaar de port
niet ondersteunde uitzondering.
Er zijn verschillende manieren om het probleem op te lossen.
(A) Wijzig de defaultConnectionFactory
configuratie:
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>
(B) Gebruik de benoemde configuratieverbindingsreeks en specificeer expliciet de provider:
<connectionStrings>
<add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123" />
</connectionStrings>
en verander de constructor in
public MyDB()
{
// ...
}
of als de naam anders is dan uw DbContext
afgeleide klassenaam:
public MyDB() : base(connection_string_name)
{
// ...
}
(C) Gebruik DbConfigurationTypeAttribute
:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyDB : DbContext
{
// ...
}