サーバ側のサービスの作成
お小遣い帳の内容を一覧で表示する前に、サーバ側でデータベースを検索するサービスを作成しましょう。次の手順で作業します。
- エンティティーデータモデルの作成
- ドメインサービスの作成
サービス側のデータアクセスには、エンティティーフレームワークを使用します。エンティティーフレームワークの詳しい説明は割愛しますが、他のデータアクセス技術を利用してサーバ側のサービスを作成することも、もちろん可能です。
エンティティーフレームワークについては、連載記事「ADO.NET Entity Framework入門」を参照してください。
1.エンティティーデータモデルの作成
まず、データベースを検索するために、ASP.NET側にお小遣いデータベースのエンティティーデータモデルを作成します。データモデルの名前は、お小遣い.edmxとします(図7)。

データベースからデータモデルを作成するので、モデルコンテンツの選択画面で[データベースから生成]を選択します(図8)。

データ接続の選択で、お小遣い帳データベースを設定します(図9)。

データベースオブジェクトの選択では、今回使用する「お小遣い明細」テーブルと「お小遣い分類」テーブルを選択します(図10)。

2.ドメインサービスの作成
次に、エンティティーデータモデルに対してデータの検索/更新を行うために、ASP.NET側のプロジェクトにドメインサービスを作成します。作成するサービスは「お小遣いService.cs」とします(図11)。

WCF RIA Servicesを利用すると、ドメインサービスやドメインコンテキストなどといった言葉が頻繁に登場します。この「ドメイン」とは、特定の問題領域のを指します。今回の例で言えば、ドメインサービスとは、お小遣い帳という領域(ドメイン)の問題を解決(データの追加、更新、削除)するためのサービスを指します。
ドメインサービスには、先ほど作成したエンティティーデータモデルのオブジェクトを追加します。今回はSilverlight側からドメインサービスを呼び出すので、「Enable client access」のチェックボックスを必ずチェックしてください。また、お小遣い明細テーブルに対してはデータの更新を行うので、「Enable editing」チェックボックスにチェックしてドメインサービスを作成します(図12)。

Visual Studioのソリューションエクスプローラーには、図13のようにお小遣いモデルのエンティティー情報を格納した「お小遣いService.metadata.cs」と、お小遣いモデルに対して検索や更新を行う「お小遣いService.cs」が作成されたことが確認できます。

エンティティーデータモデルを作成したにも関わらず、DataContextの一覧にオブジェクトが表示されない場合は、一度ビルドした後、改めてドメインサービスを作成してください。Visual Studioは、ビルドされたエンティティーデータモデルから、DataContextの一覧を表示しているようです。
ドメインモデルの有無に関わらず、エンティティーデータモデルを編集した際は、必ずビルドすることをお勧めします。
