private static void SetAddedId(AuditEntityEntry entry) { if (entry.OperateType == OperateType.Insert) { dynamic entity = entry.Entity; entry.EntityKey = entity.Id.ToString(); AuditPropertyEntry property = entry.PropertyEntries.FirstOrDefault(m => m.FieldName == "Id"); if (property != null) { property.NewValue = entity.Id.ToString(); } } }
public void AuditEntityEntryTest() { AuditEntityEntry entry = new AuditEntityEntry(); entry.Name.ShouldBeNull(); entry.PropertyEntries.ShouldNotBeNull(); entry.PropertyEntries.ShouldBeEmpty(); entry = new AuditEntityEntry("name", "typeName", OperateType.Delete); entry.Name.ShouldBe("name"); entry.TypeName.ShouldBe("typeName"); entry.OperateType.ShouldBe(OperateType.Delete); entry.PropertyEntries.ShouldNotBeNull(); entry.PropertyEntries.ShouldBeEmpty(); }
private static AuditEntityEntry GetAuditEntity(EntityEntry entry, IEntityInfo entityInfo) { AuditEntityEntry audit = new AuditEntityEntry { Name = entityInfo.Name, TypeName = entityInfo.TypeName, OperateType = entry.State == EntityState.Added ? OperateType.Insert : entry.State == EntityState.Modified ? OperateType.Update : entry.State == EntityState.Deleted ? OperateType.Delete : OperateType.Query, Entity = entry.Entity }; EntityProperty[] entityProperties = entityInfo.Properties; foreach (IProperty property in entry.CurrentValues.Properties) { if (property.IsConcurrencyToken) { continue; } string name = property.Name; if (property.IsPrimaryKey()) { audit.EntityKey = entry.State == EntityState.Deleted ? entry.Property(property.Name).OriginalValue?.ToString() : entry.Property(property.Name).CurrentValue?.ToString(); } AuditPropertyEntry auditProperty = new AuditPropertyEntry() { FieldName = name, DisplayName = entityProperties.First(m => m.Name == name).Display, DataType = property.ClrType.ToString() }; if (entry.State == EntityState.Added) { auditProperty.NewValue = entry.Property(property.Name).CurrentValue?.ToString(); audit.PropertyEntries.Add(auditProperty); } else if (entry.State == EntityState.Deleted) { auditProperty.OriginalValue = entry.Property(property.Name).OriginalValue?.ToString(); audit.PropertyEntries.Add(auditProperty); } else if (entry.State == EntityState.Modified) { string currentValue = entry.Property(property.Name).CurrentValue?.ToString(); string originalValue = entry.Property(property.Name).OriginalValue?.ToString(); if (currentValue == originalValue) { continue; } auditProperty.NewValue = currentValue; auditProperty.OriginalValue = originalValue; audit.PropertyEntries.Add(auditProperty); } } return(audit.PropertyEntries.Count == 0 ? null : audit); }