使用されるベースの引数DbContext
コンストラクター
nameOrConnectionString
と呼ばれます 。したがって、構成ファイルからの接続文字列の名前、または実際の接続文字列のような名前をサポートします。
後者の問題は、プロバイダー名を指定できないことです。 前者は構成からのものと同様に、この場合、EFはdefaultConnectionFactory
で指定されたものを使用します 構成要素。この場合はSystem.Data.Entity.Infrastructure.SqlConnectionFactory
です。 つまり、- SQL Server 、したがって、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
{
// ...
}