Argumentet för den använda basen DbContext
konstruktör
kallas nameOrConnectionString
. Därför stöder den ett namn på en anslutningssträng från konfigurationsfilen, eller som i ditt fall en faktisk anslutningssträng.
Problemet med den senare är att den inte tillåter att ange leverantörens namn som med den förra som kommer från konfigurationen, i vilket fall EF använder den som anges i defaultConnectionFactory
konfigurationselement, som i ditt fall är System.Data.Entity.Infrastructure.SqlConnectionFactory
, med andra ord - Sql Server , därav port
stöds inte undantag.
Det finns flera sätt att lösa problemet.
(A) Ändra defaultConnectionFactory
konfiguration:
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>
(B) Använd namngiven konfigurationsanslutningssträng och ange explicit leverantören:
<connectionStrings>
<add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123" />
</connectionStrings>
och ändra konstruktorn till
public MyDB()
{
// ...
}
eller om namnet är ett annat än din DbContext
härlett klassnamn:
public MyDB() : base(connection_string_name)
{
// ...
}
(C) Använd DbConfigurationTypeAttribute
:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyDB : DbContext
{
// ...
}