web-dev-qa-db-ja.com

不変名「MySql.Data.MySqlClient」のADO.NETプロバイダーは、マシンまたはアプリケーションの構成ファイルに登録されていません

エンティティフレームワーク6をmysqlサーバーに使用するasp.netソリューションがあります。

今、私は新しいマシンでそのソリューションに取り組む必要があります。
しかし、いくつかの問題があります。
1)ソリューションのビルド時にエラーが発生します: "不変名「MySql.Data.MySqlClient」のADO.NETプロバイダーがマシンまたはアプリケーションの構成に登録されていませんファイル」。

error screenshot

App.config:

<entityFramework>
  <providers>
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
  </providers>
</entityFramework>
<system.data>
  <DbProviderFactories>
    <remove invariant="MySql.Data.MySqlClient" />
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>  

2)model.edmxファイルを開くと、次のメッセージが表示されます。
"エンティティモードデザイナーは、要求したファイルを表示できません。"

error screenshot

マシンにインストールしました:

1)mysql connector/net 6.9.9
2)Visual Studio 1.2.6のmysql
3)mysqlコネクターodbc 5.3.6。

私に何ができる?

13
Ariela

私はインターネットで提案されたほとんどの解決策に従いましたが、残念ながらすべてが失敗しました。この問題は、Visual StudioにMySqlコネクタがなく、mysql-connector-net-7.0.4をインストールすることで解決したために発生します( https://downloads.mysql.com/archives/c-net/

11
iQalalwa

上記の解決策は私にとってはうまくいきませんでした。しかし、 この回答 に触発されて、Web.configファイルのentityFrameworkタグの下にあるバージョン情報を削除することで、この問題を解決できました。

    <entityFramework>
      <defaultConnectionFactory
       type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
      <providers>
        <provider invariantName="MySql.Data.MySqlClient"
         type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
        </provider>
      </providers>
    </entityFramework>

になる:

    <entityFramework>
      <defaultConnectionFactory
       type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
      <providers>
        <provider invariantName="MySql.Data.MySqlClient"
         type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6">
        </provider>
      </providers>
    </entityFramework>

ETA: このフォローアップ で指摘したように、MySql.Dataファイル内のWeb.configのバージョンを手動で編集する必要がある場合があります。

<dependentAssembly>
    <assemblyIdentity name="MySql.Data" culture="neutral" publicKeyToken="c5687fc88969c44d" />
    <bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" />
</dependentAssembly>
4
alexanian

私は多くのグーグルを行って解決策を見つけましたMySQL.Data.dll、MySQL.Web.dll、MySQL.Data.Entity.dll、System.Data.Entity.dllがすべてローカルにコピーされていることを確認します(アセンブリを右クリックしてCopy Localがtrueに設定されていることを確認してください)この問題をデバッグしようとしたときにローカルに次を追加しましたが、おそらく不要なSystem.Data.dll [おそらくオプション] System.Data.Entity.Design [おそらくオプション]

そして、これはあなたがグーグルやAppHarborの多くの場所で読まないステップです! web.configファイルに次を追加します。

  <system.data>
  <DbProviderFactories>
    <clear />
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient"
    description=".Net Framework Data Provider for MySQL"
    type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, 
    Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>
3
Biswajit Pal

App.configの次のセクションで機能します。

<system.data>
    <DbProviderFactories>
        <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data" />
    </DbProviderFactories>
</system.data> 
3
Anson Fong

この問題を解決するために、 この投稿 で説明した変更に加えて、次のように_MySql.Data_の_web.config_のバージョンを手動で編集する必要がありました。

_<dependentAssembly>
    <assemblyIdentity name="MySql.Data" culture="neutral" publicKeyToken="c5687fc88969c44d" />
    <bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" />
</dependentAssembly>
_
2
Chris Bremner

参照リストからMySql.Data.Entity.EF6の古い参照を削除します。 Nuget Package Managerを使用して再インストールすると、動作します/

1
Idan Shechter

構成ファイルに_codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6"_を追加するか、アプリケーションの起動時にDbConfiguration.SetConfiguration(new MySqlEFConfiguration())を呼び出す必要があります。

0
Dmitry Litus