Entity Frameworkでのデータ削除

 この節では、LINQを使ってデータベースのデータを削除する方法を見てみましょう。SQL文でDELETE文に該当します。

 データを削除するにはLINQの命令文ではなく、Entity Data Modelで追加したテーブルに対応するオブジェクトのデータを削除し、その後、DbContextクラスのSaveChangesメソッドでデータベースに反映させます。

○ プロジェクト

 プロジェクトを作成して確認してみましょう。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 EntityDeleteTest

サンプルダウンロード

○ 作成の準備

 「EntityUpdateTest」プロジェクトを修正して作成しましょう。EntityUpdateTestフォルダーをコピーして、作成するプロジェクト名にフォルダー名を変更してください。

○ プログラム

 Mainメソッドを次のように記述してください。

Program.cs

  1. static void Main(string[] args)
  2. {
  3.  //コンテキストを生成する
  4.  BooksEntities entities = new BooksEntities();
  5.  //Usersテーブルのデータを取得する
  6.  var data = from users in entities.Users
  7.      select users;
  8.  //一覧を表示する
  9.  Console.WriteLine("次の一覧から削除したいデータのIDを選んでください。");
  10.  foreach (var line in data)
  11.  {
  12.   Console.WriteLine("ID:{0} 氏名:{1}", line.Id, line.Name);
  13.  }
  14.  //削除するデータを入力する
  15.  Console.Write("ID:");
  16.  int id = Int32.Parse(Console.ReadLine());
  17.  //選択したIDのデータを削除する
  18.  var deletedata = entities.Users.Single(x => x.Id == id);
  19.  entities.Users.Remove(deletedata);
  20.  //データベースに反映させる
  21.  entities.SaveChanges();
  22.  Console.WriteLine("削除しました。");
  23.  Console.ReadLine();
  24. }

○ 実行結果

次の一覧から削除したいデータのIDを選んでください。
ID:1 氏名:佐藤
ID:2 氏名:鈴木
ID:3 氏名:高橋
ID:4 氏名:田中
ID:5 氏名:伊藤
ID:6 氏名:山本
ID:7 氏名:中村
ID:7
削除しました。

データが削除された
データが削除された

○ 解説

 32行目では、削除するデータを取得しています。ID列のデータが入力したIDと等しいという条件を与えて取り出しています。33行目では14行目で生成したBooksEntitiesオブジェクトを通して、UsersコレクションのRemoveメソッドを呼び出しています。引数に32行目で取得したUsersオブジェクトを指定します。すると、BooksEntitiesオブジェクトのUsersコレクションからデータが削除されます。

 36行目ではBooksEntitiesオブジェクトのSaveChangesメソッドを呼び出しています。これによりデータベースのデータが実際に削除されます。

前へ