【ハウツー】

LightSpeedで始める.NETでの光速開発 - モデリング編

5 エンティティの関連の設定

    青木淳夫  [2008/12/24]

    Rentalエンティティの追加

    引き続き、レンタルを表すRentalエンティティを追加します。RentalエンティティにはDaySpan(レンタル日数:Int32)というプロパティを追加します。

    ここでは、1個のレンタルには複数のDVDが含まれるという意味で、1対多の関連を設定します。ちなみに、本来のレンタル業務のことを考慮すると、もっと多くのエンティティを追加して、関連の種類も変更する必要があるのですが、本稿ではLightSpeedの機能紹介の都合上、このモデルで進めていきます。

    Rentalエンティティを追加して、1対多の関連を設定

    相互参照用のプロパティ名は、デフォルトの「Rental」と「Dvds」とします。レンタルに含まれないDVDもあるとして、[Is Nullable]プロパティをTrueに設定します。Rentalの読み込み時に関連するDvdも同時に読み込むため[Eager Load Collection]プロパティをTrueに設定します。この設定で生成されるコードは、次のようになります。

    生成されたDvdエンティティとRentalエンティティのコード(抜粋)

    1対多の関連がプロパティとして構成されていることが分かります。LightSpeedでは、EntityCollectionクラスとEntityHolderクラスを使って、この関連を制御します。

    1対多の関連の設定

    1対多の関連では次のような項目を設定できます(説明の都合上「1対多」の両モデルをそれぞれ「1」と「多」で表現しています)。

    1対多の関連に設定できる項目

    設定名 既定値 説明
    Backreference Name エンティティ名 「多」から「1」を逆参照する時のプロパティ名
    Collection Name エンティティ名+s 「1」から「多」を参照する時のコレクション名
    Is Nullable False Null許容型にするか。「多」で「1」のキーを格納する型に反映
    Backreference Aggregates なし 「1」のロード制御用集約名。セミコロンで複数指定
    Collection Aggregates なし 「多」のロード制御用集約名。セミコロンで複数指定
    Eager Load Backreference False 「多」を取り出した時に「1」も同時にロードするか
    Eager Load Collection False 「1」を取り出した時に「多」も同時にロードするか
    Order By なし 「多」を取り出すときの並び順、SQLのORDER BYと同じ記法
    Column Name なし(エンティティ+Id) 永続化するテーブルの列名
    Is Dependent False カスケード削除を行うか(DependentAttribute参照)

    テーブルのレイアウト

    このモデルからデータベースを更新すると、次のテーブル構成になります。

    データベースのモデル図(Visioにてリバースエンジニアリング)

    モデルデザイナーの問題

    このデザイナーはLightSpeed2.0から登場した新機能のせいか、日本語を正しく処理できなかったり、複雑なモデルをテーブルに反映させる時にうまく更新できなかったりする問題がありました。その場合にはデータベース管理ツール(SQL Server Management Studio等)を使って、いったんテーブルを削除したり手動で制御したりすると良いでしょう。

    まとめ

    今回は、LightSpeedの導入、モデルデザイナーの使い方について紹介してきました。次回は、生成されたコードを使ってエンティティを操作する方法を紹介していきます。

    関連したタグ

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン