エンティティの設定
本稿では、レンタルと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)となりますので、この項目を設定しておくほうが良いでしょう。