Exemplo n.º 1
0
        /// <summary>
        /// 获取实体状态记录审计日志
        /// </summary>
        /// <param name="Entries"></param>
        /// <returns></returns>
        public async Task <List <AuditEntryInputDto> > GetChangeTrackerList(IEnumerable <EntityEntry> Entries)
        {
            await Task.CompletedTask;
            var list = new List <AuditEntryInputDto>();

            foreach (var entityEntry in Entries)
            {
                var auditentry = new AuditEntryInputDto();
                auditentry.TableName         = entityEntry.Metadata.GetTableName();
                auditentry.EntityAllName     = entityEntry.Metadata.Name;
                auditentry.EntityDisplayName = entityEntry.Entity.GetType().ToDescription();
                //auditentry.TableName=
                switch (entityEntry.State)
                {
                case EntityState.Detached:
                    auditentry.OperationType = DataOperationType.None;
                    break;

                case EntityState.Unchanged:
                    auditentry.OperationType = DataOperationType.None;
                    break;

                case EntityState.Deleted:
                    auditentry.OperationType = DataOperationType.Delete;
                    break;

                case EntityState.Modified:
                    auditentry.OperationType = DataOperationType.Update;
                    break;

                case EntityState.Added:
                    auditentry.OperationType = DataOperationType.Add;
                    break;
                }
                var properties = entityEntry.Metadata.GetProperties();
                foreach (var propertie in properties)
                {
                    var AuditPropertys = new AuditPropertysEntryInputDto();
                    var propertyEntry  = entityEntry.Property(propertie.Name);//获取字段名
                    if (propertyEntry.Metadata.IsPrimaryKey())
                    {
                        auditentry.KeyValues.Add(propertie.Name, propertyEntry.CurrentValue?.ToString());
                    }
                    else
                    {
                        AuditPropertys.Properties           = propertie.Name;
                        AuditPropertys.NewValues            = propertyEntry.CurrentValue?.ToString();
                        AuditPropertys.OriginalValues       = propertyEntry.OriginalValue?.ToString();
                        AuditPropertys.PropertiesType       = propertie.ClrType.FullName;
                        AuditPropertys.PropertieDisplayName = propertyEntry.Metadata.PropertyInfo.ToDescription();
                        auditentry.PropertysEntryInputDto.Add(AuditPropertys);
                    }
                }
                list.Add(auditentry);
            }
            return(list);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 得到审计属性
        /// </summary>
        /// <param name="entityEntry"></param>
        /// <returns></returns>
        private List <AuditPropertysEntryInputDto> GetAuditPropertys(EntityEntry entityEntry)
        {
            List <AuditPropertysEntryInputDto> propertyDtos = new List <AuditPropertysEntryInputDto>();

            foreach (var propertie in entityEntry.CurrentValues.Properties.Where(p => !p.IsConcurrencyToken && p.PropertyInfo?.GetCustomAttribute <DisableAuditingAttribute>() == null))
            {
                var propertyEntry = entityEntry.Property(propertie.Name);//获取字段名
                AuditPropertysEntryInputDto propertyDto = new AuditPropertysEntryInputDto();
                propertyDto.Properties           = propertie.Name;
                propertyDto.PropertieDisplayName = propertyEntry.Metadata.PropertyInfo?.ToDescription();
                propertyDto.PropertiesType       = propertie.ClrType.FullName;
                if (propertie.IsPrimaryKey())
                {
                    continue;
                }
                if (entityEntry.State == EntityState.Added)
                {
                    var currentValue = propertyEntry.CurrentValue?.ToString();
                    propertyDto.NewValues = currentValue;
                    propertyDtos.Add(propertyDto);
                }
                else if (entityEntry.State == EntityState.Modified)
                {
                    var originalValue = propertyEntry.OriginalValue?.ToString();
                    var currentValue  = propertyEntry.CurrentValue?.ToString();
                    if (currentValue != originalValue)
                    {
                        propertyDto.NewValues = currentValue;

                        propertyDto.OriginalValues = originalValue;
                        propertyDtos.Add(propertyDto);
                    }
                }
                else if (entityEntry.State == EntityState.Deleted)
                {
                    var originalValue = propertyEntry.OriginalValue?.ToString();
                    propertyDto.OriginalValues = originalValue;
                    propertyDtos.Add(propertyDto);
                }
            }
            return(propertyDtos);
        }