コード例 #1
0
ファイル: AuditEntry.cs プロジェクト: mohocp/EFCore.Audit
        public void Update()
        {
            // Get the final value of the temporary properties
            foreach (var prop in TemporaryProperties)
            {
                NewValues[prop.Metadata.Name] = prop.CurrentValue;
            }

            if (TemporaryProperties != default && TemporaryProperties.Count(x => x.Metadata.IsKey()) > 0)
            {
                ReadablePrimaryKey = Entry.ToReadablePrimaryKey();
                HashReferenceId    = ReadablePrimaryKey.ToGuidHash();
            }
        }
コード例 #2
0
ファイル: AuditEntry.cs プロジェクト: mohocp/EFCore.Audit
        public AuditEntry(EntityEntry entry, IAuditUserProvider auditUserProvider)
        {
            Entry = entry;
            ReadablePrimaryKey = Entry.ToReadablePrimaryKey();
            HashReferenceId    = ReadablePrimaryKey.ToGuidHash();
            TableName          = entry.Metadata.GetTableName();
            DisplayName        = entry.Metadata.DisplayName();
            SchemaName         = entry.Metadata.GetSchema();
            EntityState        = entry.State;
            ByUser             = auditUserProvider == default ? "Unknown" : auditUserProvider.GetUser();

            foreach (PropertyEntry property in entry.Properties)
            {
                if (property.IsAuditable())
                {
                    if (property.IsTemporary)
                    {
                        TemporaryProperties.Add(property);
                        continue;
                    }

                    string propertyName = property.Metadata.Name;

                    switch (entry.State)
                    {
                    case EntityState.Added:
                        NewValues[propertyName] = property.CurrentValue;
                        break;

                    case EntityState.Deleted:
                        OldValues[propertyName] = property.OriginalValue;
                        break;

                    case EntityState.Modified:
                        if (property.IsModified)
                        {
                            OldValues[propertyName] = property.OriginalValue;
                            NewValues[propertyName] = property.CurrentValue;
                        }
                        break;
                    }
                }
            }
        }