如何获取 EF Core 中已更改属性的列表?

How to get list of changed properties in EF Core?

我可以轻松获取 EntityEntry 及其状态:

EntityEntry<Customer> entry = dbContext.Entry(customer);

如何获取 EntityEntry 的更改属性列表?

我有这样的东西:

entry.CurrentValues.Properties
    .Where(prop => changedEntry.CurrentValues[prop] != changedEntry.OriginalValues[prop])
    .Select(prop => new 
    {
        Property = prop, 
        Value = changedEntry.CurrentValues[prop] 
    });

但它不支持 ValueComparers。

您可以通过以下方式进行:

entry.Properties
    .Where(prop => prop.IsModified)
    .Select(prop => new
    {
        Property = prop.Metadata,
        Value = prop.CurrentValue,
    });

其他方法需要访问 EF Core 的 Internal 命名空间。