我正在为应用程序构建日志功能,我希望在更改之前和之后保存实体数据,但我无法在更改之前获得实体版本。
我尝试answer here,但在{1}} ObjectStateManager
中找不到.NET Core。
答案 0 :(得分:0)
覆盖SaveChanges
中的SaveChangesAsync
和IdentityDbContext
方法:
public override int SaveChanges(bool acceptAllChangesOnSuccess)
{
OnBeforeSaveChanges();
var result = base.SaveChanges(acceptAllChangesOnSuccess);
return result;
}
public override async Task<int> SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default(CancellationToken))
{
OnBeforeSaveChanges();
var result = await base.SaveChangesAsync(acceptAllChangesOnSuccess, cancellationToken);
return result;
}
private void OnBeforeSaveChanges()
{
var entries = ChangeTracker
.Entries()
.Where(p => p.State == EntityState.Added || p.State == EntityState.Modified || p.State == EntityState.Deleted)
.ToList();
foreach (var entry in entries)
{
foreach (var property in entry.Properties)
{
var originalValue = property.OriginalValue;
var currentValue = property.CurrentValue;
}
}
}
欲了解更多信息,请阅读: Entity Framework Core: History / Audit table