質問: ORMapperを使い、データベースの内容をエンティティクラスにマッピングし、それをDataGridなどに表示するとします。 データベースのある列が「コード」でデータを保持している場合、そのデータは人が読める「名称」に変換して表示しますが、その場合、エンティティクラスの作りとしては、「名称」のプロパティを持たせるものでしょうか? それとも、エンティティクラスを継承して、「名称」のプロパティを持った拡張エンティティクラスにマッピングするものでしょうか? ご教授願います。
回答: こんにちは。 EntityFrameworkを利用していると仮定して回答してみます。 EntityFrameworkの場合は、エンティティクラスの設計はインスタンス化可能でかつマッピング先のプロパティが存在していれば良いので、何らかの計算処理を組み込んだプロパティを追加定義しても問題はありません。むしろ、DB内のデータに対して一定の加工が必要なのであれば積極的にそうするべきです。例として、DB上で「独自形式の日付データ(よくない)」のカラムをエンティティクラス上でDateTime型のプロパティとして表示する、などが考えられます。 逆に、エンティティクラスの継承を行うことはまずありません。継承はそのような用途で使うものではないからです。エンティティクラスをそのまま扱わず、適切なプロパティを持った別のデータクラスにマッピングするということはあり得ますが、それが継承で作成されるということは決してないと言えます。