ピースペース

Ria ServicesのEntitySetは自動でリフレッシュしない

leave a comment »

相変わらずまたビジネスSilverlightをやっていたりする…
そして、Client側にデータを蓄えてステートフルなUIを組み立てできるのはやっぱり便利!
とか改めて見直したい気持ちになっていたりする。

とわいえ、グローバルVMは依然メモリリークが怖い。
あと、どうも一旦LoadしたEntityは追加でQuery&Loadしても最新状態に自動ではレフレッシュしてくれないらしい!
想定してない動作だったのでちょっとびっくりした。

で、それをするには、load時にLoadBehavior.RefreshCurrentを指定する必要があるらしい
http://weblogs.asp.net/fredriknormen/archive/2009/11/24/refresh-the-cached-entityset-after-a-submitchanges-wcf-ria-services.aspx

記事にもあるように、サーバー側の削除をLocalなEntitySetに反映させるにはさらにおまじないが必要だったり
loadするqueryにサービス側でIncludeを指定して依存Entityの同時loadを行っていたりするとさらに予期せぬことが起こったり
とにかく、LoadBehavior.RefreshCurrent指定だけで簡単に済む話しではないようだ。

ということで、結局はLoad前にEntities.Clear()するのが吉。
となると、ステートフルな状況とどのタイミングでClearするのがいいのか?でまた混乱したりする。まで進んで、
ちょっと前のこともなにも覚えてないWebアプリのアルツ具合がステキに思えてくる。
と、いったりきたり…

結論はいつもとおり、そこは要件に合わせて使いわける! で落ち着く;;
で、それもしやすい。ということで、クライアント側はJavaScript>Silverlight。てことになるのかな?
今年はまったく手が付けられなかったOnePage。とかにも、いずれ着手が必要なんだろう。

「新しい」は目的ではない! は、もちろんそうだが、
改良の結果として現れてくるものが「新しい」のもまた真。
変える必要のない価値があるのもそのとおりで、
価値はそのままにして手段を変える必要があるのも、またそのとおり。 なんちゃって
になんとか老人パワーを滑り込ませる

Written by nasu38yen

2012年12月27日 @ 12:49 PM

カテゴリー: 未分類

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。