5. エンティティ操作
それでは、Entity Frameworkを使ってデータを操作してみましょう。
データ追加
データを追加するコード例は以下のようになります。
// 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メソッドを呼び出すと、データが登録されます。
データ取得
次にデータを取得するコード例は以下のようになります。
// 登録したデータを参照
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クラスを使用します。DbSet(Usersプロパティ)に対して、Linq To Entitiesを使用すると簡単にデータを取得することができます。
プログラムを実行
それではプログラムを実行してみます。通常の[デバッグ実行]では完了後にコンソールが閉じてしまうので、[デバッグなしで実行]を選ぶと良いでしょう。
テーブルの準備をしていなくてもエラーが出ることなく、登録した2ユーザーのうち25歳以上のユーザーを正しく取得できていることが分かります。
データ更新・削除
参考まで、データの更新、削除するコードも紹介しておきましょう。
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メソッドを呼び出して保存します。

