2011-06-27 8 views
0

Silverlight RIA Servicesでソリューションを開発しています。要件の1つは、サーバーへのブロッキング呼び出しを使用して実装しているクライアントへの「プッシュ」通知で、更新が受信されたときに返されます。これは一般的な構造を使用して実装しようと、私はこのデータ構造に来ている:RIAサービス変更トラッキング

public class Change 
{ 
    public ObjectType Type { get; internal set; } // objecttype is an enum 
    public int ObjectKey { get; internal set; } 
    public string PropertyName { get; internal set; } 
    public object OldValue { get; internal set; } 
    public object NewValue { get; internal set; } 
    //key required for RIA Services 
    [Key] 
    public Guid ChangeGuid { get; private set; } 
} 
この設計ではいくつかの明白な欠陥は別に

(これは単なるテストです)、プロパティOldValueNewValueに表示されませんそのオブジェクトのタイプのために、クライアントになります。これらのプロパティの値は常にEntity Framework primitiveになります。

すべてを文字列に変換せずにクライアントにOldValueNewValueを得る方法はありますか?

グーグルでは、検索結果が乱雑になるため、objectというキーワードが原因で、私は非常に遠くにいます。

私の問題に関する一般的な解決方法はありがたいです。

+0

型がString型、DateTime型、その他のプリミティブ型のいずれかになり、コンパイル時にどの型が使用されるのかわからないのですか? –

+0

@IsaacまさにEntity Frameworkオブジェクトのプロパティとして使用される任意の型になります。 http://msdn.microsoft.com/en-us/library/ee382832.aspx – Bas

答えて

0

WCFを「オブジェクト」としてシリアル化すると、クライアント側に他のインターフェイス/タイプを暗黙的に再導入することはできません。とにかく文字列として効果的に連載しています。

"本当に"どのような種類のオブジェクトについての内部的な詳細は、シリアル化を介して保持されません。

null可能なメンバーは、ObjectType列挙型の値ごとに1つでは、必要なもののみを設定してください。これにより、転送されるデータに小さなオーバーヘッドが追加される可能性がありますが、管理しやすくなり、厳密に型指定されたオブジェクトが得られます。

+0

を参照してください。ObjectTypeはオブジェクト自体でありプロパティではありませんが、これを行うためにプロパティタイプを追加することはできますが、これにはまだエンティティフレームワークプリミティブごとのプロパティ。 – Bas

関連する問題