Entity Framework コードファーストによる簡単なプログラム作成例

ここではコンソールアプリケーションを例にとり、エンティティ・フレームワーク "コード・ファースト" を利用したアプリケーションを開発する手順をみてみましょう。

またここでは DbContext API を利用します。

DbContext API については 「DbContext API」をみてください。

尚、この記事では Visual Studio Express 2012 for Desktop を利用しています。

Entity Framework コードファーストによる簡単なプログラム作成例

ここではコンソールアプリケーションで、コード・ファーストを利用する例をとりあげます。

というわけで、さっそく、まずは C# のコンソールアプリケーションのプロジェクトを作ります。

コンソールアプリの作成

また、ここでは DbContext API を利用するので、EntityFramework.dll をプロジェクトに追加しておきます。 追加するにはプロジェクトメニューから、Manage NuGet packages... (NuGet パッケージの管理) を選択します。

EntityFramework.dll の追加

EntityFramework をインストールします。

EntityFramework.dll の追加

すると System.Data.Entity が使えるようになります。

もし画面の表示が違う場合はコマンドからの EntityFramework のインストールも試してみてください。

さっそくモデルを定義しましょう。新規アイテムとして C# のクラスを追加します。ファイル名は Models.cs としました。 ファイル名などに特に決まりはありません。

クラスの追加

ここでは Models.cs は次のようにしましょう。

using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;

namespace cftest1
{
    class CfTest1DbContext : DbContext
    {
        public DbSet<Company> Companies { get; set; }
        public DbSet<Employee> Employees { get; set; }
    }

    class Company
    {
        public int Id { get; set; }
        public string CompanyName { get; set; }
    }

    class Employee
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }

        public int CompanyId { get; set; }
        public Company Company { get; set; }
    }
}

Company (会社) と Employee (従業員) を表す POCO を定義しています。そして、DbContext をベースとするコンテキストクラスで、 それらのデータセット (DbSet) を定義しています。これがデータベース上のテーブルになります。

尚、この時点でデータベースは一切触っていませんし、設定ファイルにも何も記載はありません。そんな状況でコードでいきなり POCO を定義するあたりが、まさにコード・ファーストですね。

テストプログラムは次のようにします。

using System;

namespace cftest1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var ctx = new CfTest1DbContext())
            {
                ctx.Companies.Add(new Company
                {
                    CompanyName = "ABC Company"
                });

                ctx.SaveChanges();

                foreach (var c in ctx.Companies)
                {
                    Console.WriteLine("{0}", c.CompanyName);
                }
            }
        }
    }
}

using で DbContext を作成して、その中で DbSet<Company> 型の Companies にオブジェクトを追加。 SaveChanges メソッドで変更を保存。

続いて、Companies コレクションを foreach して、その中で取得したオブジェクトの CompanyName プロパティを読み出す・・・

というプログラムです。

ちなみに、オブジェクトを new する所では C# の新しめの機能であるオブジェクトイニシャライザを使ってます。

これを実行してみましょう。Ctrl+F5 で Start Without Debugging とすると次のように、確かに "ABC Company" が表示されました。

Code First のプログラムを実行

何か動くことはわかりましたが、実際にデータはどのように保存されたのでしょうか。

次の記事で、何が起きたのかみてみましょう。

» 「エンティティフレームワーク・コードファーストで作成されたデータベースを確認する

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説