Entity Framework 4.1 и OriginalValues ​​/ CurrentValues ​​и DbContext - PullRequest
0 голосов
/ 10 августа 2011

В настоящее время я использую DbContext с Ef 4.1 и пытаюсь проверить все изменения некоторых из моих сущностей. Я могу захватить исходные и текущие значения для любых свойств объекта, однако не могу понять, как захватить связь (внешний ключ) OriginalValues ​​объекта NavigationProperty. Кто-нибудь понял это?

1 Ответ

2 голосов
/ 10 августа 2011

Вы должны либо включить внешние ключи в свои сущности, чтобы они отслеживались как обычные значения, либо вы должны преобразовать свои DbContext в ObjectContext и использовать более мощные (и более громоздкие) ObjectStateManager, где вы можете получить экземплярыObjectStateEntry как для юридических лиц, так и для отношений.

Для преобразования DbContext в ObjectContext используйте:

var objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;

Чтобы получить записи, используйте:

var entires = objectContext.ObjectStateManager
                           .GetObjectStateEntries(~EntityState.Unchanged);

Итерируйте по записям и используйте их State,CurrentValues и OriginalValues свойства для ведения журнала.Отношения не должны быть изменены, поэтому вам нужно только проверить наличие удаленных и добавленных отношений (вместо обновления удаляется старое и добавляется новое).Проблема с удаленными один раз, потому что они не предоставят вам свои значения.Вы можете попробовать небольшой обходной путь, изменив их состояние, получив значения и изменив состояние обратно на удаленное - если это не сработает, вы не сможете записывать старые значения для отношений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...