ADO.NET Entity Framework の簡単なサンプル

投稿日 2015/06/11

[Home] 

はじめに

Visual Studio のバージョンでどこのころか覚えていませんが、"Entity Framework" というのが登場してしばらく経ちます。実際に業務に使うには、新しいものは「こなれていない」ので使ってない方も多いと思いますが、すでに Entity Framework のバージョンも 6 とか 7 になっています。

ここまでこなれてくれば、この辺でそろそろ本格的に使ってもいいかもしれません。MSDN: ADO.NET Entity Framework

という訳でちょっとしたサンプルを作ってみました。


プロジェクトの作成

以下の例は、Visual Studio 2012 Express Desktop の場合です。操作は Visual Studio バージョンにより異なる可能性があります。

  1. まず、一番簡単なコンソールアプリケーションのプロジェクトを作ります。
  2. プロジェクトが生成されたら、ソリューションエクスプローラでプロジェクトを選択し、「新しい項目の追加」コンテキストメニューを実行します。
  3. ダイアログが開いたら「データ」項目一覧から "ADO.NET Entity Data Model" を選択します。
  4. ウィザード画面の次のステップでで「データベースから生成」を選択します。
  5. 画面が切り替わるので、データベースを選択します。
  6. 画面が切り替わるので、モデルに含めるデータベース・オブジェクト(テーブルなど)を選択します。
  7. 「完了」ボタンをクリックすると、モデル (デフォルトでは Model1.edmx) が追加されます。

コードの作成

モデルを追加すると、エンティティを使ってデータベースオブジェクト(テーブルなど)にクエリーを行えるようになります。エンティティの名前は、「ダイアグラム」を表示し、プロパティペインで「エンティティコンテナー名」の値になります。

あるいは、App.config の connectionStrings で、add name="..." のところで ... 部分になります。

次の例は、SQL Server Compact データベース上のテーブル "colors" にクエリーを行うものです。このテーブルのモデルは次のようになっています。

namespace EntityFrameworkTest1
{
    using System;
    using System.Collections.Generic;
    
    public partial class colors
    {
        public int id { get; set; }
        public string name { get; set; }
        public string code { get; set; }
    }
}

下のプログラムは、この colors テーブルの内容を Linq を使って取得し表示するものです。

using System;
using System.Collections.Generic;
using System.Linq;

namespace EntityFrameworkTest1
{
    class Program
    {
        static void Main(string[] args)
        {
            Entities entities = new Entities();
            IEnumerable rs = from x in entities.colors where x.id > 0 select new { x.name, x.code };
            if (rs.Any())
            {
                foreach (var i in rs)
                {
                    Console.WriteLine(i.name + ", " + i.code);
                }
            }
            else
            {
                Console.WriteLine("No data.");
            }
#if DEBUG
            Console.ReadKey();
#endif
        }
}
}

 

 


 このページの先頭