插入/更新实体时,我需要记录所有已更改的属性。 让我们拿2个表客户和地址。客户可以拥有多个地址。
任务:
将所有已更改的属性写入审计表?
如果您喜欢这样做,那么编写更新方法的方法是什么。
我看到你可以使用以下内容:
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();
}
}