Re[2]: Аудит доменной модели
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.07.09 21:17
Оценка:
Здравствуйте, Alkersan, Вы писали:

A>Сегодня попробовал реализовать историю изменений. Вот что получилось:...


Офигеть.. и это для одной сущности.

Я тут код аудита для EF набросал. Не проверял работает или нет, но общая идея именно такая:
public partial class SomeContext
{
    partial void OnContextCreated()
    {
        this.SavingChanges += new EventHandler(SomeContext_SavingChanges);
    }

    void SomeContext_SavingChanges(object sender, EventArgs e)
    {
        var changeSet = this.ObjectStateManager
                           .GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified);
        var logEntries = from se in changeSet
                         from modifiedProperty in se.GetModifiedProperties()
                         let ordinal = se.OriginalValues.GetOrdinal(modifiedProperty)
                         select new
                         {
                             Key = se.EntityKey,
                             Old = se.OriginalValues.GetValue(ordinal),
                             New = se.CurrentValues.GetValue(ordinal)
                         };

        //write entries to log
    }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.