2011年9月23日金曜日

◆LightSwitchのデータの使用(ガイドツアー)

データへの接続に従ってデータソースを追加する。

「ソリューションエクスプローラ」で「データソース」フォルダを右クリックして「データソースの追加」を選ぶ。
あとは、通常のVisualStudioでのデータソースの追加と同じ操作っぽい。

NorthWindのCustomers、Orders、Order_Detailsを追加すると以下の様なデザイン画面が表示される。
LINQでデータソースを追加した時の様に、リレーションに応じてプロパティが追加されているのが判る。
image

デザイナー画面や「ソリューションエクスプローラ」でテーブル名をダブルクリックすると、そのテーブルを中心に表示してくれる。

エンティティ フィールドのカスタマイズ
レコードに対して「概要プロパティ」なるものが有ってレコードのフィールドを一つ追加することが出来る。
CustomersテーブルならCompanyNameと簡単に決まりそうだが、テーブルによっては悩むのかも。

CustomersのPhone項目はDB上ではnvarchar、LightSwitchに取り込まれるとStringになっているが、これを「Phone Number」型に変更できる。
これによって自動的に入力チェックが可能になるのだろうが、既存のテーブルを取り込んで「Phone Number」型に一致しないデータがあったらどうなるのかはよく判らない。(後で試してみよう)

選択項目の一覧の表示
ドロップダウンにより選択肢を表示して選ばせるために「選択肢リスト」を指定できる。
ここでは、Ordersテーブル(OrdersItem)の「ShipVia」という項目に値を追加する。
image

ちなみに、「ShipVia」は発送方法とかって意味かな?
image

検証の追加
「Order_Details」データソースをダブルクリックして、表示された「Order_DetailsItem」の「Quantity」列に検証ロジックを追加する。
「Quantity」列を選択し、プロパティウィンドウの「カスタム検証」リンクをクリックすると、VisualStudioのソース編集画面が表示されるので以下のようにロジックを追加する。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.LightSwitch;
namespace LightSwitchApplication
{
public partial class Order_DetailsItem
{
partial void Quantity_Validate(EntityValidationResultsBuilder results)
{
// results.AddPropertyError("<Error-Message>");
if (Quantity < 1)
{
results.AddPropertyError("数量には1以上の値を入力してください。");
}
}
}
}

「Quantity」はプロパティとしてインテリセンス表示される。
「Order_DetailsItem」が「partial」クラスになっているので、片割れの方で自動生成してくれているのだろう。
エラーメッセージの返し方が最初からコメントで展開されているので、それに習って適当なメッセージを指定する。

計算済みプロパティの追加
ソリューションエクスプローラで「Orders」をダブルクリックして「OrdersItem」に計算列を追加する。
計算列は「OrderTotal」という列名で「Money」型。
追加すると列には計算列を表す電卓のアイコンが表示される。
image
プロパティウィンドウには「IsComputed」プロパティがTrueの状態で表示される。
image
ここで、「メソッドの編集」リンクをクリックするとソース編集画面が表示されるので以下のソースを追加。


foreach (Order_DetailsItem od in Order_Details) {

result = result += (od.UnitPrice * od.Quantity);
}
result = result + Freight.Value;


「OrdersItem」に自動的に追加された「Order_Details」への参照を使用して、配下の明細に対して「単価*数量」で合計金額を足し上げて最後に送料を加えて「result」に設定している。
「result」は「OrderTotal」が参照引数で渡ってきたものだろう。


リレーションシップの定義
ソリューションエクスプローラで「データソース」を右クリックして「データソースの追加」を選択。
データソースの種類で「データベース」を選択し次へ。
「接続プロパティ」ダイアログボックスで「Orders」とかと同様にNorthwindを指定して、テーブル一覧から「Produsts」を選んで「完了」


これで、「NorthwindData1」データソースが追加される。
本来は「Orders」と同じDBなのでそちらで追加すれば良いのだろうが、ここでは手動でリレーションの貼り方を説明するために敢えて別DBとしてデータソースを追加しているのだろう。(同じデータソースにProductsを追加するとリレーションが自動的に張られてしまうからだろう)


リレーションを追加するにはデータデザイナーのツールバーから「リレーションシップ」をクリックし、以下のように設定する。
image


ProductsItem側が「1」ではなく「0または1」というのがちょっと気になるが、ここで気にする問題では無いだろう。


とりあえずデータ側の定義はこれで終わりで次から画面作成となるようだ。

0 件のコメント:

コメントを投稿