データの更新(UPDATE文)
データの更新は、データの追加と同様にSaveメソッドを呼び出します。Saveメソッドを呼び出すと、ActiveRecordが新規か更新かを自動的に判定して、INSERT文とUPDATE文を切り替えてくれます。
データの更新方法
書籍 book = new 書籍(100);
book.名前 = "ASP.NET入門";
book.出版社ID = 2;
//保存する
book.Save();
//更新者名または更新者IDをModifiedBy列に設定する場合
//book.Save("aoki");
このコードでは、書籍クラスのデータを読み込んでから保存していています。そのため、SaveメソッドでUPDATE文が実行されます。 なお、実行されるUPDATE文は、値が変更されたプロパティだけがSET部にセットます。そのため、プロパティの値がひとつも変更されていない場合には、UPDATE文は実行されません。
データの削除(DELETE文)
データを削除するには、静的(共用)メソッドの「Delete」か「Destroy」を呼び出します。この2つのメソッドには論理削除か物理削除かの違いがあります。
データの削除方法
書籍.Delete(100); //キーによる論理削除
//書籍.Delete("Id", "100"); //条件による論理削除
//書籍.Delete("Id", "100","aoki"); //条件による論理削除(更新者名含む)
書籍.Destroy(100); //キーによる物理削除
//書籍.Destroy("Id", "100"); //条件による物理削除
Deleteメソッドは、削除フラグに当たる名前のカラム(Deleted、IsActive、IsDeleted)があれば、それらのカラムを更新して削除状態として設定します(論理削除)。もし、これらのカラムが存在しないテーブルの場合は、そのデータを削除します(物理削除)。 Destroyメソッドは、そのデータをテーブルから削除します(物理削除)。
特別なカラム名
いくつか紹介してきたように、ActiveRecordでは特別な意味を持つカラム列を利用できます。
テーブルで特別な意味をもつカラム名
カラム名 | 説明 |
---|---|
CreatedBy | 登録者名かIDを保存(Saveメソッド) |
CreatedOn | 登録日時を保存(Saveメソッド) |
ModifiedBy | 最終更新者かIDを保存(Saveメソッド) |
ModifiedOn | 最終更新日時を保存(Saveメソッド) |
Deleted | 削除フラグ(Deleteメソッド) |
IsActive | 有効フラグ(Deleteメソッド) |
IsDeleted | 削除フラグ(Deleteメソッド) |
これらの名前を持つカラムを各テーブルに用意しておけば、メソッド呼び出しをするだけで、データの更新情報を簡単に管理できます。