Реализация функции истории версий - PullRequest
1 голос
/ 01 октября 2010

Мы реализуем функцию истории версий в нашем приложении ERP (Winforms / WCF), и мы ищем лучший подход, так что мы придумали 2 решения:

1) Сохранение состояния объектакак двоичный файл в базе данных 2) Сохраните имена свойств и значения объекта и восстановите его позже при получении

Или есть лучший способ сделать это?Пожалуйста помоги.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 01 октября 2010

@ Лассе В. Карлсен, сейчас мы используем POCO для сохранения объектов. Мы не используем ORM.

@ Грант Крофтон, глядя на упомянутые вами решения, думаю, что первый подход для нас более практичен. Мы планируем сохранить историю версий любого объекта (Продукт, Заказ на поставку, Заказ на продажу и т. Д.) В одну центральную таблицу.

Так как мы не используем ORM, у нас нет способов сохранить его на БД:

  1. Делаем ли мы версии сущностей потоком и сохраняем ли они их в БД? Это даже хорошая идея? Это облегчит нам задачу.

  2. Или мы сохраняем имя каждого свойства и соответствующее ему значение объекта в базе данных? Таким образом, каждый раз, когда нам нужно получить версию сущности, нам нужно будет просто извлекать каждый атрибут и значения, относящиеся к объекту, и реконструировать объект с помощью кода (надеюсь, я вас не смущаю этим)

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

0 голосов
/ 01 октября 2010

Я зависит от того, как вы сохраняете вещи, но этот блог Los Techies описывает подробное моделирование исторических объектов в вашем коде. По сути, вы в конечном итоге с отдельной сущностью для истории. Они используют NHibernate, но я думаю, что то же самое применимо, если вы пишете код базы данных самостоятельно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...