示例#1
0
 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();
         }
     }
 }
示例#2
0
        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);
        }