Argumen dari basis DbContext
yang digunakan konstruktor
disebut nameOrConnectionString
. Oleh karena itu mendukung nama string koneksi dari file konfigurasi, atau seperti dalam kasus Anda string koneksi yang sebenarnya.
Masalah dengan nanti adalah tidak memungkinkan menentukan nama penyedia seperti yang pertama berasal dari konfigurasi, dalam hal ini EF menggunakan yang ditentukan dalam defaultConnectionFactory
elemen konfigurasi, yang dalam kasus Anda adalah System.Data.Entity.Infrastructure.SqlConnectionFactory
, dengan kata lain - Sql Server , maka port
tidak didukung pengecualian.
Ada beberapa cara untuk memperbaiki masalah ini.
(A) Ubah defaultConnectionFactory
konfigurasi:
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>
(B) Gunakan string koneksi konfigurasi bernama dan tentukan penyedia secara eksplisit:
<connectionStrings>
<add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123" />
</connectionStrings>
dan ubah konstruktor menjadi
public MyDB()
{
// ...
}
atau jika namanya berbeda dari DbContext
Anda nama kelas turunan:
public MyDB() : base(connection_string_name)
{
// ...
}
(C) Gunakan DbConfigurationTypeAttribute
:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyDB : DbContext
{
// ...
}