Написать вставку или обновить и проверить изменения сущности? Как я могу это сделать? - PullRequest
1 голос
/ 02 декабря 2010

При вставке / обновлении объекта мне нужно регистрировать все свойства, которые изменились. Возьмем 2 таблицы Customer и Address. У клиента может быть много адресов.

Задача:

Запишите в таблицу аудита все свойства, которые изменились?

Какой способ написать метод обновления, если вам нравится, делает именно это.

Я видел, что вы можете использовать следующее:

  ObjectStateEntry entry = ObjectStateManager.GetObjectStateEntry(entity);
  var changes=  entry.GetModifiedProperties().

Не уверен, как вы на самом деле пишете метод, хотя следующее - половина попытки: Вы можете дать мне несколько советов или помочь мне с кодом?

  private  bool UpdateCustomer(Customer modifiedCustomerDto)
  {
     using (var ctx = new MyContext())
     {
        var oldCustomer = ctx.Customers.Where(xx => xx.CustomerId == modifiedCustomerDto.id).Single();
        oldCustomer.Name = modifiedCustomerDto.Name;
        oldCustomer.Surname = modifiedCustomerDto.Surname;

        foreach (var oldAddress in oldCustomer.Addresses)
        {
          //if it's a new Address add it 
           //else updateit
           //Write to the audit table all the properties that have changed.
        }

        //Get Modified properties and write to the auditlog

        ctx.SaveChanges();
     }
  }

1 Ответ

1 голос
/ 02 декабря 2010

Взгляните на это сообщение , касающееся события SavingChanges .
Вы можете проверить все свойства объекта, который обновляется в этом событии, и зарегистрировать их, используя свой пользовательский код.

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