Получить список измененных свойств только для кода EF 4.2

(Извините за мой плохой английский)

Эй, мне нужно регистрировать все изменения, которые происходят в моей базе данных, для целей аудита. Когда я вставляю или удаляю объект, это легко, но когда я что-то обновляю, мне нужно сохранить, какие свойства изменились и с/на какие значения. Моя доменная служба — это DbDomainService. Как я могу получить изменения? Нужно ли мне обращаться к базе данных, чтобы увидеть старые значения и сравнить их самостоятельно?


person Leo    schedule 27.02.2012    source источник
comment
возможный дубликат Реализация журнала аудита/истории изменений с помощью MVC и Entity Framework   -  person Eranga    schedule 27.02.2012


Ответы (1)


Есть более элегантные способы сделать это (например, использование методов кодирования Aspect), но у меня был один отдельный случай, в котором я сделал это. Это стандартное обновление для служб WCF RIA на стороне сервера для каждой сущности, для которой вы разрешаете выполнять обновления.

public void UpdatePackingSlip(PackingSlip currentPackingSlip)
{

  var BeforeUpdate_PackingSlip = this.ChangeSet.GetOriginal(currentPackingSlip);
  //at this point you can compare the original values from the updated values, and capture
  // whatever you want todo

Просто убедитесь, что вы не изменили код, который прикрепляет объект обратно к контексту объекта.

person codeputer    schedule 27.02.2012
comment
codputer, это было мое первое предположение, но this.ChangeSet.GetOriginal(currentEntity) всегда возвращает ноль. Я не знаю, связано ли это с RIA... просматривая скрипач, я вижу, что только измененные значения (а не оригиналы) отправляются на сервер при SubmitChanges. - person Leo; 28.02.2012