# 共通ドキュメント

## Entity

### 概要

データの属性、導出項目などを定義し、UI、帳票、データ永続化間でやり取り出来るデータ構造を実装する。

クラス名
  (システムプロジェクト名称).(サブシステム名称).(機能名称).Entity.(エンティティ名称)
namespace
  (システムプロジェクト名称).(サブシステム名称).(機能名称).Entity
継承元
  エンティティの元になるTableRow
インターフェース
  N/A
クラス属性
  Serializable

### フィールド

以下のフィールドを定義する

- テーブルの各列から導出される項目
- 参照エンティティ
- その他

publicフィールドは使用せず、プロパティを使用する。

### プロパティ

このエンティティに必要なプロパティを定義する。

### コンストラクタ

必要に応じてコンストラクタを定義する。

- デフォルトコンストラクタは必ず定義する。
- 参照インスタンスは仕様によりnullまたは必要なインスタンスで初期化する
- 必ず継承元クラスのコンストラクタを呼び出す。

### メソッド

このエンティティに対する操作を定義する。

### サンプル

#### FXトラベル/マスタ保守/都市、地域/都市編集エンティティ(C#)

    namespace FxTravel.Maintainance.Area.Entity
    {
        /// <summary>
        /// 都市
        /// </summary>
        public class City : MstCityTableRow
        {
            /// <summary>
            /// エリア(小)
            /// </summary>
            private AreaS areaS;

            /// <summary>
            /// エリア(小)
            /// </summary>
            public AreaS AreaS
            {
                get { return this.areaS; }
                set { this.areaS = value; }
            }
            /// <summary>
            /// 国
            ///
            private Country country;

            /// <summary>
            /// 国
            /// </summary>
            public Country Country
            {
                get { return this.country; }
                set { this.country = value; }
            }
            /// <summary>
            /// エリア(小)のエリア名称のショートカット
            /// </summary>
            public string AreasName
            {
                get { return this.areaS.AreaName; }
            }

            ///<summary>デフォルト構築</summary>
            ///<remarks>エリア(小)と国は初期値空オブジェクト</remarks>
            public City() : base()
            {
                this.AreaS = new AreaS();
                this.Country = new Country();
            }
        }
    }

### その他

- データアクセスコードは書かない。
- フィールドには適切な型を設定する。数値型や日付型を文字列表現で保持しない。