Вы должны либо включить внешние ключи в свои сущности, чтобы они отслеживались как обычные значения, либо вы должны преобразовать свои DbContext
в ObjectContext
и использовать более мощные (и более громоздкие) ObjectStateManager
, где вы можете получить экземплярыObjectStateEntry
как для юридических лиц, так и для отношений.
Для преобразования DbContext
в ObjectContext
используйте:
var objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;
Чтобы получить записи, используйте:
var entires = objectContext.ObjectStateManager
.GetObjectStateEntries(~EntityState.Unchanged);
Итерируйте по записям и используйте их State
,CurrentValues
и OriginalValues
свойства для ведения журнала.Отношения не должны быть изменены, поэтому вам нужно только проверить наличие удаленных и добавленных отношений (вместо обновления удаляется старое и добавляется новое).Проблема с удаленными один раз, потому что они не предоставят вам свои значения.Вы можете попробовать небольшой обходной путь, изменив их состояние, получив значения и изменив состояние обратно на удаленное - если это не сработает, вы не сможете записывать старые значения для отношений.