2012-01-02 82 views
10

MySQLデータベースのすべてのデータアクセスを実行するためにC#でアセンブリを作成しました。私は正常にC#winformデスクトップアプリケーションでアセンブリ(コンパイルされたDLL)を使用しました。しかし、「MySQL Connector Net 6.4.4」がインストールされているPCでのみ動作します。MySQL Entity Frameworkエラー - 指定されたストアプロバイダがコンフィグレーション内に見つからないか、または無効です

asp.netウェブサイトプロジェクトで同じアセンブリを使用しようとしました。まず、接続文字列の欠落に関するエラーが表示されます。これは、MySQL接続文字列をweb.configファイルに追加することで簡単に解決できました。私は今このエラー(スタックトレースは以下に記載されています)を解決するために私のbinフォルダに次のdllを追加しようとしましたが、うまくいきませんでした。

MySql.Data.dll 
MySql.Data.Entity.dll 
MySql.Web.dll 

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. 
---> System.ArgumentException: The specified store provider cannot be found in the configuration, or is not valid. 
---> System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) 
--- End of inner exception stack trace 
+0

...私たちはEF5に更新することは知っていました(または6)できるだけ早く、今これは非常に不便な時に私たちに変更を余儀なくされます.EntityClient "属性が含まれていますか? – GemCer

+0

はい、私は確信していることを確認しました。 – Hoody

答えて

32

しかし、それだけでインストールされ、「MySQLのコネクタネット6.4.4」を持っていたPCで動作します。

プロバイダがインストールされていないマシンでコードを実行しようとしていますか?この場合、プロバイダは設定ファイルにプロバイダを登録する必要があります。これは、インストールによってmachine.configにそのプロバイダが追加されるためです。インストールしなかった場合、プロバイダは現在登録されていません。

は、web.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, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
</system.data> 
+1

ありがとう、私は今夜これを試してみましょう。将来の参照のために、これらのシナリオで設定ファイルを追加する必要があるものを正確に把握する最も簡単な方法は何ですか? – Hoody

+0

これはもう一度ありがとうございます。 – Hoody

+3

MySql.Data.dllがこれらの特性と正確に一致していても(バージョン:6.4.4.0、Culture = neutral ...)、削除する必要がありました(IL Spyに従って) – Pakman

6

私は、スタンドアロンの.NETコネクタ6.6.5インストーラを使用しているとき、私はあまりにもこの問題がありました。

解決するには、スタンドアロンの.NETコネクタインストーラをアンインストールし、mysql-community-installerをインストールするだけです。このインストーラを使用すると、MySQLに機能を追加/削除できます。 Entity Frameworkのサポート

このコネクタを使用すると、すべてのMySQL EFの問題が解消されます。

+2

yup!これはそれを修正! –

+0

には、ビジュアルスタジオビットのダウンロードが失敗したという点で、MySQLコミュニティインストーラに問題がありました。これを解決するには、1.5MBのものとは対照的に、180MBのフルインストーラーをダウンロードしてください。上の方がこれを修正しました。 – Knightsy

+0

@Greg ....これは完全に働いた!!!!!!。私はほぼ2時間この問題に直面していました。解決策は、スタンドアロンのコネクタをアンインストールすることでした(私の場合、Oracleによって提供されたものです)。 – atp9

0

すべての.netフレームワークをアンインストールして再インストールした後、このエラーが発生しました(.NETコネクタ6.4.3を使用していました)。

ます。また、取得します:修正は6.4.3をアンインストールし、6.6.5

3

は、私が行ったようにグーグル経由でこの古い質問に達する人々のためにWeb構成

<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" /> 
    </DbProviderFactories> 
    </system.data> 
2

でこれを追加インストールすることでしたこのエラーは、Visual Studio 2013との最初の互換バージョンであるVisual Studio 1.1.3用のMySQLにアップグレードしても、MySQL Connector 6.6.6を使用した場合、このエラーはEntity Frameworkと互換性がある最後のバージョンです4.3.1。

我々は、接続文字列は、providerNameで= "System.Dataを持っています

関連する問題