2016-10-24 2 views
0

У меня есть класс, и мне нужно сохранить его как в DocumentDB, так и в хранилище BLOB.Как я могу использовать разные параметры сериализации для хранилищ 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; } 
} 

В DocumentDB я должен сохранить все свойства КРОМЕ Messages затем в хранилище больших двоичных объектов Я должен сохранить все свойства включены Messages.

Так что мой вопрос: как самый лучший способ исключить свойство Messages из DocumentDB, а не из BLOB? я учил, чтобы создать клон этого класса без Messages собственности затем сохранить его в DocumentDB и сохранить исходный класс для BLOB, но это решение не удовлетворяет меня ..

+0

Можете ли вы использовать различный разрешитель контрактов для каждого по строкам [Сериализация условного членства на основе параметра запроса?] (Https://stackoverflow.com/questions/29713847/conditional-member-serialization-based-on- параметр запроса)? – dbc

ответ

1

я бы не использовать один и тот же класс. Просто потому, что мы можем повторно использовать, это не значит, что это хорошая идея. Цель и использование каждого магазина различаются, а это значит, что они могут значительно расходиться. Откуда вы знаете, является ли это одним и тем же предметом из разных магазинов или если это разные предметы? Вместо того, чтобы иметь чистые и явные реализации, вы вполне можете столкнуться с каким-то неявным монстром предположений.

Хранение и использование разные. То, что вы храните и извлекаете из blob и DocumentDB, - это не одно и то же. Будьте ясны.

+0

Я согласен с hsulriksen. Подумайте о создании классов sperate для 'MessagesMetaData' (для хранения в DocumentDB) и' Messages' (для хранения в Blob Storage). Для класса «MessagesMetaData» вы можете создать «вложение», которое является просто ссылкой на URI для сообщений в хранилище blob. –