MySQLでEntity Framework

先ほどのPostgreSQLでEntity Frameworkに引き続き、今度はMySQLで試してみたいと思います。


今回の検証は以下の環境にて行いました。


上記のものが正常に動作しているという前提で以下に纏めます。

MySQL Connector/NETのダウンロードとインストール

今回はMySQL Connector NET 6.1.4を使用します。
以下からダウンロードします。

http://dev.mysql.com/downloads/connector/net/


リンク先は6.2.3になっていますが、「Looking for previous GA versions?」のリンクから他のバージョンもダウンロードすることが出来ます。
(今回はたまたま6.1.4で試しました)


ダウンロードしたファイルを解凍すると、mysql.data.msiがあるのでこれを実行します。

すると、PostgreSQLの場合とは違い、コンポーネントのインストール、GACへの登録、machine.configへの登録まで行ってくれます。


詳細なインストール方法は

http://dev.mysql.com/doc/refman/5.1/ja/connector-net-installation-windows.html


で確認できます。

やっぱりmachine.configへの追記

大体の作業はmsiのインストール時に行ってくれるのですが、.NET Framework 2.0のmachine.configへの登録までしか行ってくれません。


そこでPostgreSQLの時と同じように

の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.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />


以下PostgreSQLの時と同じような作業が続くのでポイント部分のみを記述します。

EDM ジェネレーター (EdmGen.exe) ツールの使用

適当なフォルダにて以下のコマンドを実行します。

edmgen.exe /provider:MySql.Data.MySqlClient /mode:fullgeneration /c:"Database=XXXXXX;Data Source=localhost;User Id=XXXXXX;Password=XXXXXX" /project:MvcSampleDB
  • MvcSampleDB.csdl
  • MvcSampleDB.msl
  • MvcSampleDB.ObjectLayer.cs
  • MvcSampleDB.ssdl
  • MvcSampleDB.Views.cs

の5つのファイルが作成さるので、Visual Studioにて作成したプロジェクトに追加して、MvcSampleDB.csdl、MvcSampleDB.msl、MvcSampleDB.ssdlについては、プロパティのビルドアクションを「埋め込まれたリソース」に変更しておいてください。

アプリケーション構成ファイル(App.config等)への追記

アプリケーション構成ファイルのconnectionStringsセクションに以下を追記します。

<add name="MvcSampleDBContext"
    connectionString="metadata=res://*/MvcSample.Data.MvcSampleDB.csdl|res://*/MvcSample.Data.MvcSampleDB.msl|res://*/MvcSample.Data.MvcSampleDB.ssdl;provider=MySql.Data.MySqlClient;provider connection string=&quot;Database=XXXXXX;Data Source=localhost;User Id=XXXXXX;Password=XXXXXX&quot;"
    providerName="System.Data.EntityClient"/>

nameの値には先ほどedmgenコマンドのオプション/:projectで指定した名称+DBContext(今回の場合はMvcSample+DBContext)を指定してください。
MvcSampleDB.csdl、MvcSampleDB.msl、MvcSampleDB.ssdlについては、実際のプロジェクトでのパスに合わせて修正してください。

さぁ実行してみましょう!

以上で準備は完了です。あとはSQLServerの場合と同じように使用します。

var members = from x in ctx.member
              where x.age > 10
              orderby x.age
              select x;

こちらもASP.NET MVC 2.0 な環境で試してみましたが、いつもどおり利用することができました。

PostgreSQLの場合と比べるとデータベースの接続文字列の部分が違うくらいで、ほぼ同じような作業内容になります。

今回最初にPostgreSQLでの検証に手こずったのでMySQLではとても簡単に検証することができました。


でも、これだけやってる割には実際には全然使ってないんですよね。。。