Лучший способ обновить сериализованные объекты базы данных после изменения формы объекта - PullRequest
3 голосов
/ 17 февраля 2011

Я часто записываю свои объекты в базу данных в форме xml.

Однако, если я изменю форму своих объектов, скажем, путем изменения имени или изменения полей, я больше не могу их читатьиз базы данных, что несколько усложняет задачу их чтения, преобразования в новую форму и записи обратно в базу.

Я бы не стал переименовывать свои классы каждый раз, когда я что-то меняюо них.

* Примечание. Я полагаюсь на XmlSerialization / десериализацию объектов C # для создания Xml.Возможно, это нежелательно, если я изменяю формат объектов.

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Если вы реализуете интерфейс ISerializable на своих объектах, то вы можете реализовать пользовательские процедуры сериализации / десериализации, обеспечивающие обратную совместимость со старыми версиями объектов.: ISerializable и обратная совместимость

1 голос
/ 17 февраля 2011

Это в конечном итоге зависит от того, как вы сериализуете свои объекты.

Один из удобных вариантов - хранить их как хэш (пары ключ-значение). Таким образом, если к классу Dog, имеющему свойство name, добавить другое свойство breed, существующие объекты не будут признаны недействительными. У них просто будет breed = nil.
Точный формат хранения (xml, json или отдельная таблица «свойств») в данном случае не важен, важно то, как вы конвертируете объекты в него и обратно.

Но я не думаю, что кто-то мог бы дать конкретные предложения, не зная конкретной платформы.

...