CodeZine(コードジン)

特集ページ一覧

Entity Frameworkコードファーストで開発してみよう

ADO.NET Entity Framework4.3でコードファースト開発をする方法を紹介

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2012/03/29 14:00
目次

5. エンティティ操作

 それでは、Entity Frameworkを使ってデータを操作してみましょう。

データ追加

 データを追加するコード例は以下のようになります。

Userエンティティの追加
// 2人のユーザーを追加
var userA = new User { Name = "上川", Age = 20 };
var userB = new User { Name = "山元", Age = 30 };

using (var context = new MyContext())
{
    context.Users.Add(userA);
    context.Users.Add(userB);
    // 保存
    context.SaveChanges();
    Console.Out.WriteLine("追加しました");
}

 まずエンティティであるUserクラスをインスタンス化し任意の値を設定します。次にデータアクセスを行うためにMyContext(DbContext派生クラス)を宣言します。MyContextは、確実に破棄されるようにusing句を使って宣言します。

 DbSetクラスのAddメソッドでuserAとuserBを登録対象として設定します。その後SaveChangesメソッドを呼び出すと、データが登録されます。

データ取得

 次にデータを取得するコード例は以下のようになります。

Userエンティティの抽出
// 登録したデータを参照
using (var context = new MyContext())
{
    // 25歳以上のユーザーを抽出
    var list = from u in context.Users
                where u.Age > 25
                select u;

    foreach (var l in list)
    {
        Console.Out.WriteLine(l.Name);
    }
}

 データを取得するときも、MyContextクラスを使用します。DbSetUsersプロパティ)に対して、Linq To Entitiesを使用すると簡単にデータを取得することができます。

プログラムを実行

 それではプログラムを実行してみます。通常の[デバッグ実行]では完了後にコンソールが閉じてしまうので、[デバッグなしで実行]を選ぶと良いでしょう。

プログラムの実行結果
プログラムの実行結果

 テーブルの準備をしていなくてもエラーが出ることなく、登録した2ユーザーのうち25歳以上のユーザーを正しく取得できていることが分かります。

データ更新・削除

 参考まで、データの更新、削除するコードも紹介しておきましょう。

Userエンティティの削除と更新
using (var context = new MyContext())
{
    // ユーザーの年齢を更新
    var userU = context.Users.FirstOrDefault(x => x.Name == "上川");
    userU.Age = 50;

    // ユーザーを削除
    var userD = context.Users.FirstOrDefault(x => x.Name == "山元");
    context.Users.Remove(userD);

    // 保存
    context.SaveChanges();
    Console.Out.WriteLine("更新削除しました");
}

 データの更新については、エンティティを取り出してから、エンティティを変更します。ここでは年齢を50に設定しています。設定後にSaveChangesメソッドを呼び出して保存します。

 削除する場合は、削除対象のオブジェクトを引数にしてRemoveメソッドを呼び出します。こちらもSaveChangesメソッドを呼び出して保存します。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5