L'argument de la base utilisée DbContext
constructeur
s'appelle nameOrConnectionString
. Par conséquent, il prend en charge le nom d'une chaîne de connexion à partir du fichier de configuration ou, comme dans votre cas, une chaîne de connexion réelle.
Le problème avec ce dernier est qu'il ne permet pas de spécifier le nom du fournisseur comme pour le premier provenant de la configuration, auquel cas EF utilise celui spécifié dans defaultConnectionFactory
élément de configuration, qui dans votre cas est System.Data.Entity.Infrastructure.SqlConnectionFactory
, en d'autres termes - Sql Server , d'où le port
exception non prise en charge.
Il existe plusieurs façons de résoudre le problème.
(A) Changer le defaultConnectionFactory
configuration :
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>
(B) Utilisez la chaîne de connexion de configuration nommée et spécifiez explicitement le fournisseur :
<connectionStrings>
<add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123" />
</connectionStrings>
et changez le constructeur en
public MyDB()
{
// ...
}
ou si le nom est différent de votre DbContext
nom de la classe dérivée :
public MyDB() : base(connection_string_name)
{
// ...
}
(C) Utilisez DbConfigurationTypeAttribute
:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyDB : DbContext
{
// ...
}