ASP.NET に熟練する: カスタム エンティティ クラスの概要

http://www.microsoft.com/japan/msdn/net/aspnet/CustEntCls.asp

AAfNで言うビジネスエンティティ部分について、DataSetでお手軽に実装するか、クラスをガチッと自作するかの問題。
自作する場合に実装するべきことや考慮するべきことが挙がっている。
以下、簡単に要約。

エンティティをどうやって持つかという問題。

DataSetに持つというのが一番お手軽な方針だが、いくつかの欠点がある。
1. エンティティがデータベース構造(列名や列順)に依存してしまう。
スキーマの変更が、アプリケーション層やビジネス層でエンティティを扱う場面にも影響してしまう。

2. 型指定が弱い。
全部Objectで返ってくるのでキャストやNullのチェックが必要。

3. オブジェクト指向でない。

カスタムエンティティクラスの使用

これに対する解決策がカスタムエンティティクラス。DataSetの代わりに専用クラスにまとめる。
メリット:継承、カプセル化が可能。メソッドの追加
デメリット:O/Rマッピングが必要。
⇒継承やリレーションシップの処理方法といった、いわゆるインピーダンスミスマッチの発生。
参考:デザインパターンを利用したDBアクセスの実装 (1/3):JavaのDBアクセスを極める(5) - @IT

複数のカスタムエンティティを扱う方法

ArrayList
メリット:簡単。
デメリット:厳密な型指定がない。カスタム動作を追加できない。

・カスタムコレクション
メリット:型指定。メソッドの追加。CollectionBaseを継承して作成していれば、簡単にバインドできる。
デメリット:実装が大変。

エンティティ間のリレーションの管理

DBは外部キーでマッピング。オブジェクトは参照の保持でマッピング

その他いろいろ