2009-10-30 2 views
2

Требование состоит в том, чтобы отслеживать все изменения, внесенные в сущность, отслеживать его, чтобы знать, кто это сделал, когда он это сделал и т. Д. Например, у меня есть объект Person, и пользователь изменил имя человека; Я хотел бы сохранить эту информацию где-нибудь.Каков наилучший способ реализации отслеживания изменений в ваших сущностях?

Каков наилучший подход для этого? Или существует существующая основа для достижения этой цели.

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

ли Logging Application Block из Enterprise Library хорошего кандидата для этого требования? Я проверил это немного, но я не вижу, как я могу использовать его, чтобы отслеживать, кто это сделал, какое значение изменилось, когда он это сделал и т. Д.

Мы используем C# и. NET для нашего приложения.

+0

Кто-нибудь когда-либо использовал Блок регистрации приложений для корпоративной библиотеки для достижения этого? – pdiddy

+0

Очень похоже на этот вопрос: http://stackoverflow.com/questions/1051449/ideas-on-database-design-for-capturing-audit-trails –

+0

Возможный дубликат [Отслеживание изменений в базе данных SQL Server 2005] (http : //stackoverflow.com/questions/299931/tracking-changes-in-a-sql-server-2005-database) –

ответ

1

Standrad способ заключается в использовании событий из интерфейсов INotifyPropertyChanging и INotifyPropertyChanged. И для коллекций INotifyCollectionChanged. Как только вы подписаны на эти события, вы можете хранить информацию там, где хотите.

Если вы используете MSSQL вы можете попробовать Query Notifications

0

какое-то решение АОП (например, один в библиотеке предприятия) должны предоставить вам достаточно возможностей для создания такого решения.

Вы можете подписаться на метод вызова свойства и зарегистрировать информацию.

+0

Что такое AOP-решение? – pdiddy

+1

AOP означает Аспектно-ориентированное программирование. –

+0

У вас будет аспект, представляющий изменения в ваших бизнес-объектах. Вы можете определить функцию, которая должна быть вызвана при изменении свойства. Поэтому вы можете добавить регистрацию в свой бизнес-код, поэтому не только при выполнении запроса к базе данных, но и при простом на вашем бизнес-уровне. –

Смежные вопросы