В настоящее время мы используем Simple.Data и адаптер MongoDb.Когда мы получили документ, мы преобразуем его в POCO, например:
(User)db.Users.FindById(1234);
Для начала, это работает довольно хорошо (черт возьми, нет, схема!).Однако если мы изменим структуру объекта User (например, добавим новое поле или изменим тип данных поля), то мы больше не сможем привести исходный документ, так как он не соответствует нашей новой структуре класса.
Чтобы решить эту проблему, мы попробовали два наиболее простых подхода:
- Обновление данных вручную, чтобы отразить изменения в структуре документа.Хорошо на данный момент, но не поддается управлению, когда проект развернут в нескольких средах / превращает его в рабочий
- Ручное отображение;например.приведение SimpleRecord к словарю и оценка членов вручную.Я обеспокоен эффективностью этого подхода, хотя пока не тестировал его.Я также обеспокоен тем, что я не нашел способа сделать его универсальным, не используя отражение в типе назначения для идентификации имен членов.
Мы также рассмотрели способы решения этой проблемы с помощью Ruby и Python .Первое больше подходит (обслуживание старых версий схемы в Ming кажется излишним).
Прежде чем я убежал и портировал что-то сумасшедшее, кто-нибудь решил эту проблему с Simple.Data?Может ли кто-нибудь предложить какие-либо рекомендации относительно передовых методов работы с изменениями структуры документа в базах данных без схем?