При вставке / обновлении объекта мне нужно регистрировать все свойства, которые изменились.
Возьмем 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();
}
}