[モデルファースト]Visual Studio 2013 で、MySQL を Entity Framework で操作する
Visual Studio Express 2013 で MySQL を Entity Framework で操作できないのは、前のエントリーで書いた通りです。
(追記)
Visual Studio Express 2013 でできないのは「モデルファースト」で、「コードファースト」なら Entity Framework で MySQL を操作可能です。詳しくは以下のエントリーを参照してください。
ですが、Visual Studio 2013 Professional 以上であれば、MySQL for Visual Studio をインストールすると MySQL を Entity Framework で操作できるという情報が本当か検証します。
事前作業・前提条件
私は、Visual Studio 2013 Professional を持っていないので、体験版をこちらのサイトからダウンロードしてインストールしました。
次に、Visual Studio 2013 を起動して、コンソールアプリケーションのプロジェクトを作成します。
なお、検証の前提として、CentOS 6.5 に MySQL 5.1 がインストールされた Virtual Box 上の仮想マシンがあり、データベースとテーブルが既に作成済みとします。
MySQL の設定
こちらのサイトから、MySQL Connector/NET の 6.8.3 をダウンロードしてインストールします。
次に、こちらのサイトから、MySQL for Visual Studio 1.1.1 のベータ版をダウンロードしてインストールします。このバージョンは、Visual Studio 2013 をサポートしていますが、まだ正式版はリリースされていません。
インストールが全て終わったら、Visual Studio を再起動します。
ADO.NET Entity Data Model の追加
Visual Studio を再起動して、先ほど作成したコンソールアプリケーションを開きます。
そして、プロジェクトを右クリックして、追加 >> 新しい項目の追加 から、データを選択して、「ADO.NET Entity Data Model」をダブルクリックします。名前はデフォルトのままでかまいません。
「データベースから生成」をダブルクリックします。
「新しい接続」をクリックします。
データソースを MySQL にして、以下のように接続情報を入力して OK をクリックします。データソースが MySQL ではない場合は、「変更」から MySQL を選択してください。
エンティティの名前が「TestEntities」であることを確認して、「次へ」をクリックします。
Entity Framework 5.0 であることを確認して、「次へ」をクリックします。なお、Entity Framework 6.0 をインストールしても、ここの設定で失敗するので、Entity Framework 5.0 を使用するようにしてください。
テーブルにチェックを入れて、「完了」をクリックします
無事にテーブルを取り込むことができました。
MySQL に LINQ to Entities でアクセスする
以下のコードで、MySQL に LINQ to Entities でアクセスできます。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var entities = new TestEntities();var users = from t in entities.USERS
orderby t.ID
select t;foreach (var user in users)
{
Console.WriteLine(String.Format("{0}:{1}", user.ID, user.NAME));
}Console.ReadKey();
}
}
}
実行結果です。
まとめ
いろいろ試行錯誤しましたが、なんとか Entity Framework で MySQL にアクセスすることができました。何か、本来苦労すべきでないところで苦労した気もしますが。
本来、Visual Studio を使うのに、データベースに MySQL を選択する場合は、予算のないプロジェクトや個人開発者なので、Visual Studio Express 2013 から Entity Framework で MySQL を操作できないのは残念ですね。
スポンサーリンク
Twitter ではブログにはない、いろんな情報を発信しています。
@fnyaさんをフォロー
コメント