DevExpressにあるXpoのメリットについて

DevExpress社が提供しているDevExpressに含まれるXPOというDataSetのデザイナのようなものでデータ構造を作成できる仕組みについてのメモ書きです。


XPOでは、接続情報を渡すだけで、データベースの構築を自動で行ってくれます。

社内では、ドメインモデルからデータの関係性をそのままXPOのデザイナーに落とし込むことで、見たままのデータベースを構築することができるため、重宝しています。
まずは、そんなXPOについてのメモ書きです。
・プログラム言語(VB.NET/C#)で使う型を指定するだけで、XPOが自動的に接続先のDBの型に変換してくれる。
Ex.String型やDateTime型を適切に変換してくれる
・SQLを書かなくても条件や並び替えを簡単に指定できる
Ex.「[年齢] < 35 AND [所属部門.部門名] LIKE ‘*総務*’」みたいな感じに条件文を設定可能
Ex.SQL ServerとOracle間での構文の違いによるエラーの心配が不要
・Linqでも簡単にデータの取得が可能。
Ex. 接続情報を持っているSession内のQueryメソッドからLinqの利用が可能
・デザイナで作成後にXPObjectを継承したクラスが自動生成されるため、読み取り専用のプロパティやメソッドの定義を各XPObjectごとに定義することができる。
Ex.入力チェックなど、アプリに関係なく共通して実行する処理や、定義しなければならないものを1箇所にまとめることができる。
・Enum型などの独自の定義型も型指定することができる
Ex.性別、ステータスなど
Ex.Enum型の場合、DBでは整数として保存され、XPObjectではEnum型として扱われる
・型に他のXPObject(データの固まり、Entity)を指定することができる。
Ex. 社員(XPObject)に、フィールド:所属部門/型:部門(XPObject)を持たせる。
Ex. プログラム上では、「社員.所属部門.所属名」といった形で簡単にアクセスすることができる。
Ex. DBでは、それぞれのXPObjectの主キーであるOid(Int型)が保存されている。
・XPObject同士を1:nやn:nを紐付けることで、XPCollectionという配列を作成してくれる。
Ex. 「社員(n) → 部門(1)」の場合、部門(XPObject)に社員リスト(XPCollection)が生成される。
※この記事は、後から追記していくと思います。