2013/12/31

[モデルファースト]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」をダブルクリックします。名前はデフォルトのままでかまいません。

pic03

「データベースから生成」をダブルクリックします。

pic04

「新しい接続」をクリックします。

pic05

データソースを MySQL にして、以下のように接続情報を入力して OK をクリックします。データソースが MySQL ではない場合は、「変更」から MySQL を選択してください。

pic06

エンティティの名前が「TestEntities」であることを確認して、「次へ」をクリックします。

pic07

Entity Framework 5.0 であることを確認して、「次へ」をクリックします。なお、Entity Framework 6.0 をインストールしても、ここの設定で失敗するので、Entity Framework 5.0 を使用するようにしてください。

pic09

テーブルにチェックを入れて、「完了」をクリックします

pic10

無事にテーブルを取り込むことができました。

pic11

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();
    }
  }
}

実行結果です。

pic12

まとめ

いろいろ試行錯誤しましたが、なんとか Entity Framework で MySQL にアクセスすることができました。何か、本来苦労すべきでないところで苦労した気もしますが。

本来、Visual Studio を使うのに、データベースに MySQL を選択する場合は、予算のないプロジェクトや個人開発者なので、Visual Studio Express 2013 から Entity Framework で MySQL を操作できないのは残念ですね。


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。


    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから