Как насчет события SavingChanges:
public override int SaveChanges(SaveOptions options)
{
foreach (ObjectStateEntry entry in ObjectStateManager.GetObjectStateEntries(
EntityState.Added | EntityState.Modified))
{
//DO STUFF like create history
}
return base.SaveChanges(options);
}
Вот страница, которая может помочь: http://msdn.microsoft.com/en-us/library/cc716714.aspx
EDIT: Тогда я думаю, это может помочь ...
http://msdn.microsoft.com/en-us/library/bb896269.aspx
Отказ от ответственности ... У меня нет опыта в попытках сравнить исходные и старые значения
Отслеживание изменений
Информация об отслеживании изменений для графа объектов хранится в объектах ObjectStateEntry, которые создаются ObjectContext для каждого присоединенного объекта. Объекты ObjectStateEntry хранят следующую информацию для сущностей:
-Ключ EntityKey, который определяет идентичность сущности.
-Статус сущности для объекта
-Информация о связанных объектах
-Имя набора сущностей
-Текущие значения и исходные значения свойств сущности (объекты в добавленном состоянии не имеют исходных значений)
-Имена измененных свойств объекта.
Чтобы узнать, изменилось ли значение свойства между вызовами SaveChanges, запросите> коллекцию измененных имен свойств, возвращенную методом GetModifiedProperties ...