Silverlightアプリケーションの作成
作成したサービスとコントロールをバインドして、動作を確かめます。
データソースの作成
Home.xamlをアクティブにし、Visual Studioメニューから[データ]-[データ ソースの表示]を行って、クライアントプロキシコードを自動生成します。FormTemplateManagerプロジェクトのPropertiesにはDataSourcesが自動生成され、[データ ソース]ペインにはTransportationFeeContextが表示されます。
(1)コントロールにバインド
今回は、プロジェクト名をコントロールにバインドします。[データ ソース]ペインの[TransportationFeeContext]-[TransportationFeeEntityModel]-[ProjectName]-[ComboBox]の順に選択します(ComboBoxが無い場合[カスタマイズ]でComboBoxをチェックします)。[ProjectName]のアイコンがComboBoxのアイコンに変わったら、[申請]ボタンの下あたりにドラッグしてください。
(2)テストデータの表示
データベースにサンプルのデータが入っている場合は、F5キーでプロジェクト名が表示されます。
コントロールのイベントを設定
続いて、Silverlightアプリケーションの各ボタンの動作を作成します。Home.xamlの2つのボタンにイベントを設定します。XAMLエディター側でClickイベントを追加すると[<新しいイベント ハンドラー>]を選択し、イベントを作成することができます。
(1)[申請]ボタンの動作
[申請]ボタンのクリックでは、データベース更新のサンプルとして、固定値をデータベースに登録するようにしたいと思います。
private void Claimbutton_Click(object sender, System.Windows.RoutedEventArgs e) { Web.Models.TransportationFeeDataModel insertData = new Web.Models.TransportationFeeDataModel(); insertData.AgreementDate = System.DateTime.Parse("2011/5/20"); insertData.ExecuteDate = System.DateTime.Parse("2011/5/30"); insertData.InboundCost = short.Parse("270"); insertData.InboundRoot = "東京-川口"; insertData.Name = "鈴木"; insertData.OutboundCost = short.Parse("270"); insertData.OutboundRoot = "川口-東京"; insertData.ProjectName = "CodeZine Project"; insertData.TemporaryCost = short.Parse("0"); ((System.Windows.Controls.DomainDataSourceView)this.grid1.DataContext).Add(insertData); this.transportationFeeDataModelDomainDataSource.SubmitChanges(); }
(2)動作の確認
F5キーで実行し、申請ボタンをクリックしてください。プロジェクト名が「CodeZine Project」に変わったら更新されています。
(3)データベースの確認
Visual Studioのサーバーエクスプローラーでテーブルデータを表示しデータが追加されていることを確認してください。
まとめ
今回のサンプルアプリケーションは、レイヤー分割に主眼におき、ビジネスロジックを作成していません。
次回は、今回作成したサンプルアプリケーションをAzureに移行する手順を解説します。Azureに移行するデータベースは、モデルを通してモデルからSQL Azureのデータベースへ、SQL AzureのデータベースからASP.NETアプリケーションが使用するEntity Data Modelへと変換していきます。この手順により、コードレスでAzure移行を行います。この作業を通してAzureアプリケーションのレイヤー構成を分析することができます。
アプリケーションのレイヤー設計をする際に、物理的な配置によるレイヤーの分離は、最もメンテナンスの良い分離です。しかしながら、Azureアプリケーションに限らず、N層アプリケーションでは完全な分離が難しいケースがあります。モデルを先に設計、実装することで工数削減とMVCの実装ができることについても解説します。