SHOEISHA iD

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

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

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

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

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

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

「ObjectService」とはVisual Studio(VB.NET/C#)とSQL Server 2005を接続する場合に使用可能なO/Rマッピングツールです。デザイナ画面やファイル一括管理機能などがあり、「習得の難しさ」や「ファイル管理の煩雑さ」を解消することができます。今回は、親子関係を持つオブジェクトの取り扱いについてご紹介します。

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

はじめに

 「ObjectService」とは、Visual Studio(VB.NET/C#)とSQL Server 2005の接続に使用可能なO/Rマッピングツールです。今回は、親子関係を持つオブジェクトの取り扱いについて紹介します。

これまでの記事

対象読者

  • VB.NETを使用する方
  • SQL Server 2005を使用する方
  • O/Rマッピングに興味がある方

必要な環境

システム要件
項目環境
OSWindows XP/Vista
データベースSQL Server 2005
.NET Framework.NET Framework 2.0/3.0/3.5
Visual StudioVisual Studio 2005/2008

事前準備

 試用版のObjectServiceは、コデックスのWebサイトから入手可能です。

 有償のコンポーネントですが、ダウンロードファイルに含まれている「setup.exe」を実行し、[ライセンス版をインストールする]のチェックを外すことで、試用版をインストールできます。制限事項などの詳細については、ダウンロードファイルに同梱されているマニュアルを参照ください。

 環境設定などは過去の記事を参照してください。

リレーション設定

 親子関係のオブジェクトを取り扱いたい場合、オブジェクトにリレーションを設定することで、それが可能となります。ここでは請求書(親)と明細(子)という関係を例にご紹介します。

 まず初めに、以下のクラスを準備します。

親クラス名  Bill
プロパティ名設定内容
BillNoプロパティ型をString
キーをobjectKeyに設定
請求書No
BillDateプロパティ型をDateに設定請求日
Customerプロパティ型をCustomerに設定請求先
DueDateプロパティ型をDateに設定支払日
BillItemCollectionプロパティ型をList(Of BillItem)に設定BillItemを内包
子クラス名 BillItem
プロパティ名設定内容
IDプロパティ型をInteger
キーをobjectKey
IDフィールドをTrueに設定
明細ID
BillNoプロパティ型をStringに設定請求書No
ProductCodeプロパティ型をStringに設定商品コード
UnitPriceプロパティ型をIntegerに設定単価
Quantityプロパティ型をIntegerに設定数量

 ここでのポイントは「Bill」クラスの「BillItemCollection」のプロパティの型を「List(Of BillItem)」としていることです。「BillItemCollectionが子オブジェクトを内包する」ということを意味します。

 次に、ダイヤグラム領域上で、「Bill」と「BillItem」にリレーションシップを設定します。ツールボックスから「リレーションシップの追加」を選択して、「Bill」から「BillItem」に対してマウスをドラッグすると、2つのオブジェクトが矢印で結ばれます。

ダイヤグラム領域のイメージ
ダイヤグラム領域のイメージ

 矢印を選んで、VisualStudio上のプロパティを確認すると「キーの編集」という項目があり、選択すると「RelationKeyコレクションエディタ」画面が表示されます。

 本画面の「PrimaryKey」「ForeignKey」で、リレーションを関連付けるプロパティを選択してください。ここではそれぞれに「BillNo」を設定します。「BillクラスのBillNoとBillItemクラスのBillNoが一致している場合は親子関係が成り立つ」という設定をしたことになります。

RelationKeyコレクションエディタの画面
RelationKeyコレクションエディタの画面

 以上で、リレーションの設定が終了しました。ObjectServiceを使うと、煩雑になりがちなリレーション設定も容易に行うことが可能です。

データの保存

 次に、リレーション設定したオブジェクトを基に、データを保存してみます。子オブジェクト(BillItem)を親オブジェクト(Bill)にAddし、親オブジェクトをSaveObjectに渡します。

データ保存処理
'請求書
Dim bill As New Bill
bill.BillNo = "200709-01"
bill.BillDate = Now.Date
bill.Customer = "株式会社コデックス"
bill.DueDate = Now.Date.AddDays(30)

'明細をつ追加
Dim item As BillItem

item = New BillItem
item.ProductCode = "プリンター"
item.Quantity = 1
item.UnitPrice = 40000
bill.BillItemCollection.Add(item)

item = New BillItem
item.ProductCode = "トナー"
item.Quantity = 2
item.UnitPrice = 3500
bill.BillItemCollection.Add(item)

'保存処理
_ObjectService.SaveObject(bill)

 複雑なSQL文は必要ありません。「親子関係を取り扱う場合も、シンプルなソースコードで解決できる」と感じられるのではないでしょうか。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
データの取得

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

  • このエントリーをはてなブックマークに追加
VB.NET版O/Rマッピングツール「ObjectService」連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2570 2008/06/11 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング