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
メソッドを呼び出して保存します。