CodeZine(コードジン)

特集ページ一覧

VB.NET版O/Rマッピングツール「ObjectService」の使い方

ObjectServiceで親子関係のオブジェクトを取り扱う方法

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/06/11 14:00

目次

データの取得

 今度は保存したデータを取得してみます。

データ取得処理
Dim _ObjectService As New ObjectService
Dim _bill As Bill

'取得処理
_bill = _ObjectService.LoadObject(GetType(Bill), New ObjectQuery)

 データ取得時に親子関係を意識する必要はありません。初期設定では、親オブジェクトをロードすると、自動的に子オブジェクトもロードされます。

 取得結果をウォッチ式で確認すると、「BillItemCollection」が2つの子オブジェクトを持っており、子オブジェクトは明細の情報を持っていることを確認できます。

ウォッチリスト
ウォッチリスト
ウォッチリスト
ウォッチリスト

ロードオプションの利用

 子オブジェクトを持つ親オブジェクトをロードする時に、子オブジェクトも同時にロードするか否かを設定することが可能です。以下に、手順を説明します。

1.プロパティに対する設定

 子オブジェクトを内包しているプロパティ(本記事ではBillクラスの「BillItemCollection」)にロードオプションを設定します。Billクラスの「BillItemCollection」のプロパティをVisualStudio上で確認すると、「マッピング」という項目があります。これを選択すると「InnerObject属性エディタ」画面が表示されます。

InnerObject属性エディタ画面
InnerObject属性エディタ画面

 画面内の項目「ロードオプション」で、ステータス(Default/HighSpeed/Complete)を選択します(初期値は「Default」)。

2.ロード時の設定

 データのロード時に利用する「SaveObject」の引数に、ステータス(Default/HighSpeed/Complete)を指定します(デフォルトは「Complete」)。以下のサンプルでは、「HighSpeed」を指定しています。

サンプルソース
Dim _ObjectService As New ObjectService
Dim _bill As Bill

'取得処理の引数にステータスを設定
_bill = _ObjectService.LoadObject(GetType(Bill), 
       New ObjectQuery, , HighSpeed)

3.ツールが自動判定

 ツール内では、上記1と2で設定した2つのステータスを比較し、子オブジェクトをロードするか否かを判断しています。

子オブジェクトがロードされる条件
プロパティに対する設定ロード時の設定
DefaultDefault/HighSpeed/Completeのいずれを指定しても、
子オブジェクトがロードされます。
HighSpeedHighSpeed/Completeを指定した場合に限り、
子オブジェクトをロードされます
(Defaultと指定するとロードされません)。
CompleteCompleteを指定した場合に限り、
子オブジェクトがロードされます
(Default/HighSpeedと指定するとロードされません)。

 子オブジェクトをロードするか否かを容易に設定できますので、パフォーマンス重視の場合に有効な機能となります。

最後に

 開発現場で親子関係を持つオブジェクトを取り扱うケースは多いと思いますが、その都度SQLで解決していくのは、エンジニアの負担が大きい作業ではないでしょうか。ObjectServiceを利用すれば、画面上でプロパティを操作するだけで設定が完了するので、非常に簡単に親子関係のオブジェクトを取り扱うことができます。本項を通じてツールの利便性を知っていただければと思います。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:VB.NET版O/Rマッピングツール「ObjectService」

著者プロフィール

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5