Как сохранить предыдущее и новое значение данных? - PullRequest
3 голосов
/ 07 января 2012

В настоящее время я работаю над проектом, в котором нам нужно архивировать и отслеживать все измененные данные.

При отказе от модификации мы должны хранить эту информацию

  • Ктоизменил данные?
  • Когда?
  • И ... вот почему я задаю этот вопрос: Сохраните предыдущее и новое значение данных .

Быстро, я должен проследить каждыймодификация для всех данных.

Пример : у меня есть поле имени, почему значение «Морган».

Когда я изменяю это значение, я должен иметь возможность сказатьпользователю, что 6 января, к XXX, значение изменилось с «Морган» на «Роберт»…

Я должен найти чистый и общий метод, чтобы сделать это, потому чтоЭто связано с большим объемом данных.

Моя программа находится на C # (.NET 4), и мы используем Sql Server 2008 R2 и NHibernate для сопоставления объектов.

Есть ли у вас какие-либоидеи, опыт или решение о том, как сделать такую ​​вещь?

Ответы [ 3 ]

1 голос
/ 08 января 2012

NHibernate Предоставляет все, что вы хотите:)

Вы должны использовать NHibernate 3.2+ (3.2 - текущая версия).

Это просто, как

enversConf.Audit<Person>();

Выможно получить информацию здесь и здесь

1 голос
/ 07 января 2012

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

триггер-вставка-старые-значения-значения-что-обновлено

0 голосов
/ 07 января 2012

Я был в той же ситуации, что и вы.В итоге я сделал так:

Сохраните ActivityEntry в базе данных, содержащей столбец идентификаторов (если у вас есть несколько изменяемых объектов), индикатор действия (может быть «Имя пользователя изменено», какa int), поле даты, userId и самое важное поле параметра.

Комбинируя значения из поля параметра и индикатора действия, я могу создать строки типа "{0} change {1} 's имя от {2} до {3} ", где мои значения параметров могут быть" Джон; Джо ".

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

...