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)が生成される。

※この記事は、後から追記していくと思います。