Silverlightで実装するデータ処理の応用
Silverlightで行うデータ処理アプリケーション開発の第一歩 第5回
データの追加
ADO.NET Data Servicesを使用したデータの追加を考えてみましょう。
例えば、前述したサンプルシステムでは、購入したい商品を選択し、[バスケットに追加]ボタンを押すことで、データの追加が発生します。

このときデータが追加されるエンティティ(テーブル)の1つとして、Basketsがあります。
Basketsは、Customersエンティティ(購入者)と以下の図のような関係性を持っているので、新規でBasketsオブジェクトを作成して追加する際に、Customersに対して考慮を行う必要があります。

下記が、Basketsへのデータ追加のコードです。
Baskets basket = new Baskets()
{
BasketId = Guid.NewGuid(),
Customers = AuthenticationContext.Current.User.Customer,
LastUpdateDate = DateTime.Now
};
context.AddToBaskets(basket);
context.AttachTo("Customers", AuthenticationContext.Current.User.Customer);
context.SetLink(basket, "Customers“g, AuthenticationContext.Current.User.Customer);
// Data Services による更新確定
context.BeginSaveChanges(SaveChangesOptions.Batch, OnAddBasketSaveChanged, context);
}
private void OnAddBasketSaveChanged(IAsyncResult result)
{
Dispatcher.BeginInvoke(() =>
{
MSStoreSampleEntities context = result.AsyncState as MSStoreSampleEntities;
DataServiceResponse response = context.EndSaveChanges(result);
});
}
初めにBasketsオブジェクトを新規で作成して、各メンバーの値をセットしているのが分かります。この中にあるCustomersというメンバーには、別エンティティをセットする必要があり、このプログラム上ではここが初登場になるため、contextに対してAttachToを実行してデータの追跡処理を依頼しておく必要があります。さらに、contextに対してSetLinkを行い、BasketsとCustomersの関係性を伝えます。
その後、BeginSaveChangesを実行して追加処理を先に進めますが、当然ながら、追加処理も非同期の処理が関係します。
削除や更新に関してもサンプルでは実装しているので、ぜひ興味があれば確認してみてください。
この記事は参考になりましたか?
- Silverlightで行うデータ処理アプリケーション開発の第一歩連載記事一覧
-
- Silverlightで実装するデータ処理の応用
- Silverlightが持つ強力なデータバインド機能
- Silverlightで実装するデータの取得、表示の処理
- この記事の著者
-
マイクロソフト株式会社 小高 太郎(コダカ タロウ)
マイクロソフト株式会社 デベロッパーエバンジェリスト。某国内SI企業にてERPパッケージ開発に携わり、プログラマー、SE、PMと様々なロールを担当すると共に、Microsoft Universityの講師を兼務する。マイクロソフト株式会社では、デベロッパーエバンジェリストとして開発者向けに様々な技術...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
