2016-10-24 6 views
0

私はクラスを持っており、DocumentDBとBLOBストレージの両方に保存する必要があります。私はMessages以外のすべてのプロパティを保存する必要がDocumentDBでDocumentDBとBLOBストレージで異なるシリアル化オプションを使用するにはどうすればよいですか?

public class MessagesSetType 
{ 
    public DateTime CreatedAt { get; set; } 
    public virtual string CustomerSubscriptionId { get; set; } 
    public virtual string DefaultLanguage { get; set; } 
    public MessageSetTypeCollection Messages { get; set; } 
    public DateTime ModifiedAt { get; set; } 
    public virtual string Name { get; set; } 
    public virtual string[] Tags { get; set; } 
} 

その後、BLOBストレージに私はすべてのプロパティを保存する必要がありMessagesが含まれています。

私の質問は、メッセージプロパティをDocumentDBから除外し、BLOBから除外するにはどのように最も良い方法ですか? Messagesプロパティを持たないこのクラスのクローンを作成し、それをDocumentDBに保存して元のクラスをBLOBに保存する必要がありましたが、この解決策は私を満足させません。

+0

[クエリパラメータに基づく条件付きメンバシリアライゼーション?](https://stackoverflow.com/questions/29713847/conditional-member-serialization-based-on-news)の行に沿って、それぞれ異なる契約レゾルバを使用できますか?クエリパラメータ)? – dbc

答えて

1

私は同じクラスを使用しません。単に再利用できるということは良いアイデアだとは限りません。各店舗の目的と使用方法は異なります。つまり、店舗の店舗はさらに大きく分岐する可能性があります。異なる店舗の同じ商品であるか、それとも異なる商品であるかはどうやって分かりますか?クリーンで明示的な実装をする代わりに、暗黙の仮定のモンスターを見つけることができます。

保存と使用方法が異なります。 blobとDocumentDBから保存して取得するものは同じものではありません。明示してください。

+0

私はhsulriksenに同意します。 'MessagesMetaData'(DocumentDBに格納される)と' Messages'(Blob Storageに格納される)のためのクラスを作成することを検討してください。 'MessagesMetaData'クラスでは、BLOBストア内のメッセージのURIへの参照である「添付」を作成できます。 –

関連する問題