【发布时间】:2021-01-03 07:31:36
【问题描述】:
我正在使用 EF Core 的更改跟踪器创建审计跟踪,对于状态为 Added、Modified 或 Deleted 的每个实体,我创建一个新的审计实体以插入到我的 Audit 表中.我想对UPDATE 之前的内容进行快照并在 JSON 中捕获它,并对UPDATE 之后的实体快照执行相同操作。
var entityType = this.Model.FindEntityType(dbEntry.Entity.GetType());
var originalObjectProperties = new Dictionary<string, object>();
var currentObjectProperties = new Dictionary<string, object>();
foreach (var property in entityType.GetProperties())
{
originalObjectProperties.Add(property.GetColumnName().ToUpper(), dbEntry.OriginalValues[property.Name]);
currentObjectProperties.Add(property.GetColumnName().ToUpper(), dbEntry.CurrentValues[property.Name]);
}
dbEntry 是来自更改跟踪器的实体条目。不过,这些给了我完全相同的 JSON。在我的测试中,我有一个INSERT、UPDATE 和DELETE,这就是我的BEFORE_JSON 和AFTER_JSON 在我的数据库中的UPDATE:
{
"WORK_REQUEST_KEY": 2,
"PROJECT_NAME": "This has now been updated",
"WR_TYPE_KEY": 2
}
{
"WORK_REQUEST_KEY": 2,
"PROJECT_NAME": "This has now been updated",
"WR_TYPE_KEY": 2
}
【问题讨论】:
标签: c# entity-framework-core audit-logging