SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

データの取得

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

データ取得処理
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を利用すれば、画面上でプロパティを操作するだけで設定が完了するので、非常に簡単に親子関係のオブジェクトを取り扱うことができます。本項を通じてツールの利便性を知っていただければと思います。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
VB.NET版O/Rマッピングツール「ObjectService」連載記事一覧

もっと読む

この記事の著者

吉野健太(ヨシノケンタ)

株式会社コデックス所属。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2570 2008/06/11 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー