我想记录新的和修改过的记录。此代码适用于修改记录。
但是有了添加记录,就会出现问题。由于它是数据库的新功能,因此还没有主键。所以没有办法记录添加了哪条记录。
但是,如果我尝试在保存后记录记录,则不再添加EntityState。所以我不知道添加了什么。
我能够提出的唯一解决方案是保存新记录列表,然后在保存之后,然后记录更改。但这似乎是一种解决方法。
有什么方法可以解决这个问题吗?
private List<Event> LogChanges(EntityEntry entityEntry, Enums.TableNames tableName)
{
List<Event> result = new List<Event>();
var databaseValues = entityEntry.GetDatabaseValues();
foreach (var property in entityEntry.CurrentValues.Properties.Where(a=> a.Name !="TenantId"))
{
string original = databaseValues[property]?.ToString();
string current = entityEntry.CurrentValues[property]?.ToString();
if(!object.Equals(original,current))
{
result.Add(
new Event()
{
AppUserId = this._appUserProvider.CurrentAppUserId,
EventDate = DateTimeOffset.UtcNow,
EventTypeId = (int)Enums.EventTypes.Modified,
TenantId = databaseValues.GetValue<int>("TenantId"),
RecordId = databaseValues.GetValue<int>("Id"),
ColumnName = property.Name,
OriginalValue = original,
NewValue = current,
TableId = (int)tableName
});
}
}
return result;
}