エンティティの設定
本稿では、レンタルとDVDだけの簡単なモデルを作っていきます。まずエンティティの名前をDvdに変更します。
Nameプロパティ以外は特に設定しなくても問題ありませんが、エンティティには次のような項目を設定できます。
エンティティに設定できる項目
| 設定名 | 既定値 | 説明 |
|---|---|---|
| Name | なし | エンティティ名(クラス名) |
| Cache Expiry | 0 | キャッシュ時間(分) |
| Cached | False | キャッシュするか |
| Visibility | Public | アクセシビリティ(Public、Internal) |
| Base Class | なし(Entity) | 基底クラス |
| Identity Type | Int32 | アイデンティティのデータ型(String、GUID、Int32、Int64) |
| Order By | なし | 複数件取り出すときの並び順、SQLのORDER BYと同じ記法 |
| Cascade Deletes | True | カスケード削除を行うか |
| Identity Column Name | なし(ID) | アイデンティティ(主キー列)の名前 |
| Identity Method | Default | アイデンティティの生成方法(Default、KeyTable、Guid、Sequence、IdentityColumn、GuidComb) |
| Optimistic Concurrency Checking | False | 楽観的同時実行制御をするか |
| Schema | なし | 永続化するテーブルが含まれるスキーマ名 |
| Soft Delete | False | データの論理削除を行うか |
| Table Name | なし | 永続化するテーブル名 |
| Track Create Time | False | データの登録日時を格納するか |
| Track Update Time | False | データの更新日時を格納するか |
| Transient | False | 永続化しないEntityか |
便利な項目としては[Track Create Time][Track Update Time][Soft Delete]があります。これらをTrueに設定するとCreateOn、UpdateOn、DeleteOnといった日付型の列に、登録、更新、論理削除日時が保存されます。
同様に[Optimistic Concurrency Checking]をTrueに設定すると、LockVersionという数値列が追加されます。これを使うことで、データを取り出して更新するまでの間に、他のセッションによってデータが更新されていないかを確認することができます。もし、変更されている状態で保存しようとすると例外(OptimisticConcurrencyException)が発生します。
エンティティにプロパティを追加
続けて、Dvdエンティティを右クリックして[新しいEntity Propertyの追加]を選択します。ここでは、DvdエンティティのプロパティとしてTitle(タイトル:String)、InfoUrl(詳細URL:String)、Type(DVDの種別:Int32)を追加します。
プロパティの設定
エンティティの各プロパティでは次の項目を設定できます。
エンティティの各プロパティに設定できる項目
| 設定名 | 既定値 | 説明 |
|---|---|---|
| Name | なし | 名前 |
| Data Type | String | データ型(String、Int32、Int64、Decimal、DateTime、Boolean等) |
| Is Nullable | False | Null許容型にするか |
| Indexed | False | フルテキスト検索の対象にするか(Lucene.Net) |
| Aggregates | なし | プロパティの読み込み制御に使う名前 |
| Column Name | なし | 永続化するテーブルの列名 |
| Transient | False | 永続化しないプロパティか |
| Validate Email | False | E-Mailチェックを行うか |
| Validate Format | なし | 正規表現チェック |
| Validate Length | なし | 長さチェック。<=1、>=1、1-10形式 |
| Validate Presence | False | 必須項目か |
| Validate Unique | False | 値が一意の項目か |
| Validate Uri | False | URIの妥当性チェックを行うか |
| Validate Value | なし | 値の大小チェック。1-10形式 |
ここでは妥当性チェックを定義できます(もし不正なデータ状態でエンティティを永続化しようとすると例外が発生します。IsValidメソッドでチェック結果を確認でき、エラー内容はErrorプロパティに格納されます。エラーメッセージのローカライズについてはサンプルのLocalizationプロジェクトを参考にできます)。 モデルからテーブルを作成する場合の注意点として、文字列型のプロパティでは[Validate Length]で設定した値が列のサイズとして設定されます。設定しない場合は既定値でnvarchar(10)となりますので、この項目を設定しておくほうが良いでしょう。