Аргументът на използвания базов DbContext
конструктор
се нарича nameOrConnectionString
. Следователно той поддържа име на низ за връзка от конфигурационния файл или като във вашия случай действителен низ за връзка.
Проблемът с последния е, че не позволява посочване на име на доставчика както при първия, идващ от конфигурацията, в който случай EF използва този, посочен в defaultConnectionFactory
конфигурационен елемент, който във вашия случай е System.Data.Entity.Infrastructure.SqlConnectionFactory
, с други думи - Sql сървър , следователно port
не се поддържа изключение.
Има няколко начина за отстраняване на проблема.
(A) Променете defaultConnectionFactory
конфигурация:
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>
(B) Използвайте низ за връзка с име за конфигурация и посочете изрично доставчика:
<connectionStrings>
<add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123" />
</connectionStrings>
и променете конструктора на
public MyDB()
{
// ...
}
или ако името е различно от вашия DbContext
име на производен клас:
public MyDB() : base(connection_string_name)
{
// ...
}
(C) Използвайте DbConfigurationTypeAttribute
:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyDB : DbContext
{
// ...
}