答えが見つからないように見えるかなり単純な質問があります。Ria Services を使用した Silverlight アプリがあります。DomainService クラスには、以下のような update メソッドがあります。
public void UpdateConversationState(ConversationState currentConversationState)
{
var original = ChangeSet.GetOriginal(currentConversationState);
if (original != null)
ObjectContext.ConversationStatesRepository.AttachAsModified(currentConversationState, original);
else
ObjectContext.ConversationStatesRepository.Attach(currentConversationState);
currentConversationState.UpdDat = DateTime.Now;
if(original.Name != currentConversationState.Name)
//Do something extra
}
問題は、Name プロパティが常に空であることです。実際、Id を除くすべてのフィールドにはデフォルト値があります。GetOriginal メソッドがどのように機能するかを検索しようとしましたが、ヘルプが見つかりません。クライアントからサーバーに送り返された変更に基づいて、サーバー上で元のオブジェクトを再構築しようとするようです。
または、更新中にオブジェクトの特定のプロパティが変更されたかどうかを確認するより良い方法を誰かが知っているでしょうか? もちろん、データベースの値と比較することもできますが、データベースへのこの余分な呼び出しを避ける必要があるようです。
どんな助けでも大歓迎です:-)
編集: RoundTripOriginalAttribute について知りました。これはトリックを行うようです。ところで、RIA をもう少しうまく文書化できると思うのは私だけでしょうか?