データの更新(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メソッド)

これらの名前を持つカラムを各テーブルに用意しておけば、メソッド呼び出しをするだけで、データの更新情報を簡単に管理できます。