Существуют ли общие шаблоны для разработки классов для бессхемных баз данных в .NET? - PullRequest
8 голосов
/ 07 марта 2012

Я немного поработал с mongoDB в C #, но весь мой код все еще находится в разработке.Мне интересно, какие полезные паттерны люди нашли в развитии своих доменных классов с течением времени, когда новые свойства создаются, изменяются и удаляются.Я уверен, что мне нужно будет либо запустить обновления для всех моих хранимых данных, либо убедиться, что мои доменные классы знают, как обращаться с записями более старого формата, но со временем я мог представить, что это станет хаотичным, если класс знает, как обращаться свсе возможные форматы форм.

Думаю ли я об этом?Это в основном случай использования хорошего защитного программирования?

1 Ответ

2 голосов
/ 07 марта 2012
  1. Добавление новых свойств в ваши объекты данных не может быть проще. Ты только добавь их. Если вы не беспокоитесь о том, что эти свойства являются нулевыми для объект, который существует в базе данных, вам не нужно ничего делать остальное. Если некоторые пользователи / машины используют старую версию вашего приложение и ваши классы были отмечены BsonIgnoreExtraElementsAttribute, они могут даже не нуждаться в обновлении их программное обеспечение.
  2. Удаление устаревших свойств не может быть проще. Вы просто удалите их в ваших классах. Если ваши занятия помечены BsonIgnoreExtraElementsAttribute, вам даже не нужно удалять их в вашей базе данных (в случае, например, у ваших пользователей есть несколько версии вашего приложения).
  3. Переименование свойств класса также легко. Конструктор BsonElementAttribute имеет параметр, поэтому вы можете сопоставить его с правильным именем свойства в базе данных.
  4. Изменение типа собственности может потребовать от вас обновления вашего данные. А если серьезно, как часто вы меняете тип недвижимости с строка для int в производстве?

Так что во многих случаях вам даже не нужно запускать обновления для ваших данных (если только вы не изменили тип данных или ваше свойство не влияет на индекс). Другой момент заключается в том, что добавление BsonIgnoreExtraElementsAttribute часто является хорошей практикой, особенно если вы беспокоитесь о том, что свойства часто добавляются и / или удаляются. Следуя этой практике, вы можете предоставить более старые и новые версии приложения для работы со всеми версиями записей, пользуясь преимуществами «бесхарактерности».

...