Здравствуйте, 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
}
}