Управление изменениями в структуре классов в соответствии с коллекцией mongodb - PullRequest
5 голосов
/ 23 сентября 2011

Мы используем mongodb с c #. Мы пытаемся найти способ, чтобы сохранить нашу коллекцию единообразно. Прямо сейчас, если разработчик вносит какие-либо изменения в структуру класса (добавляет поле или изменяет тип данных или изменяет свойство во вложенном классе), он / она должен изменить коллекцию монго вручную.

Это боль, так как наш проект растет, а разработчики, работающие над проектом, продолжают расти. Интересно, кто-то уже нашел способ решить эту проблему?

  • Исследование
    1. Я нашел похожий вопрос . однако не смог найти решение.
    2. Найден способ найти все свойства Найти свойства ; однако, тип данных и вложенные документы становятся проблемой.

1 Ответ

1 голос
/ 23 сентября 2011

Если вы хотите мигрировать постепенно при доступе к записям, вам нужно следовать нескольким простым правилам:

1) Если вы добавляете поле, оно должно быть обнуляемым или иметь значение по умолчанию.

2) Никогда не переименовывайте поля, никогда не изменяйте типы полей
- Вместо этого всегда добавляйте новые поля, добавляйте код миграции, удаляйте старые поля только тогда, когда все документы перенесены поверх.

Для создания прототипов с MongoDBи C # я создаю динамическую оболочку ..., которая позволяет вам указывать ваши объекты с использованием только интерфейсов (классы не нужны), и позволяет динамически добавлять новые интерфейсы к существующему объекту.Не готов к использованию, но для создания прототипов это экономит много усилий и делает миграцию действительно простой.

...