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 をインストールします。
すると 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" が表示されました。
何か動くことはわかりましたが、実際にデータはどのように保存されたのでしょうか。
次の記事で、何が起きたのかみてみましょう。