8

MySQL Connector/Net 6.7.4MySQL for Visual Studio 1.0.2をダウンロードし、次の手順に従ってテストしました。

  1. 既存の MySQL データベースへの接続を作成します。
  2. コンソール アプリケーションを作成します。
  3. 既存のデータベース接続からADO.NET Entity Data Modelを追加します。
  4. コード生成項目EF 5.x DbContext Generatorを追加して、.tt ファイルを置き換えます。
  5. データベースからレコードを取得するコードを記述します。

アプリケーションを実行すると、次の例外が発生しました。

ConfigurationErrorsException : 登録された .Net Framework Data Provider の検索または読み込みに失敗しました。

次に、MySql.DataおよびMySql.Data.Entityライブラリ バージョン 6.7.4.0 への参照を .NET 4.5 プロジェクトに追加しました。アプリケーションを実行すると、別の例外が発生します。

FileLoadException : ファイルまたはアセンブリ 'MySql.Data, Version=6.6.5.0,culture=neutral, PublicKeyToken=c5687fc88969c44d' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040)

バージョン番号に注意してください。これは、インストールした MySQL コネクタのバージョンではありません。

正しく動作させるにはどうすればよいですか?

4

5 に答える 5

14

これを解決するためのトリックは次のとおりです。

  1. 正しいバージョン (私の場合は .NET 4.5 の場合は 6.7.4.0)のMySql.Dataおよびライブラリへの参照をプロジェクトに追加します。MySql.Data.Entity
  2. 管理者として実行するエディターで編集machine.configし、MySQL バージョンの出現箇所を6.6.5.0すべて6.7.4.0.

2 番目のステップでは、machine.configフレームワークのバージョン (3.0、3.5、4.0) とアーキテクチャ (32 ビット、64 ビット) ごとに 1 つずつ、複数のファイルがあることに注意してください。machine.configまた、.NET 4.5 のファイルは .NET 4.0 フォルダーにあることに注意してください。machine.configファイルは次の場所にあります。

C:\Windows\Microsoft.NET\Framework\\Config

と:

C:\Windows\Microsoft.NET\Framework64\\Config

ファイルに MySQL への参照がない場合は、MySQL for Visual Studiomachine.configがインストールされていない可能性があります。それを行うか、プロジェクトのファイルに次を追加します。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, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
</system.data>

ただし、上記のスニペットをインストールしてファイルに追加するMySQL for Visual Studio app.config、次の例外が発生することに注意してください。

ConfigurationErrorsException : 列 'InvariantName' は一意に制限されています。値 'MySql.Data.MySqlClient' は既に存在します。

于 2013-09-18T20:57:21.073 に答える
6

machine.config を編集するのは好きではありません。このリダイレクトを web.config に追加するだけです。

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-6.6.5.0" newVersion="6.7.4.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>
于 2013-11-11T04:39:25.397 に答える