public void Build(AuditEntry parent, string relationName, string propertyName, object oldValue, DbUpdatableDataRecord dbUpdatableDataRecord, int dbUpdatableDataRecordPosition)
        {
            InternalPropertyName = propertyName;

            if (!IsValueSet)
            {
                DbUpdatableDataRecord         = dbUpdatableDataRecord;
                DbUpdatableDataRecordPosition = dbUpdatableDataRecordPosition;
                OldValue = oldValue;
            }

            if (Parent == null)
            {
                Parent = parent;
            }

            if (PropertyName == null)
            {
                PropertyName = parent.Parent.CurrentOrDefaultConfiguration.PropertyNameFactory != null?
                               parent.Parent.CurrentOrDefaultConfiguration.PropertyNameFactory(ObjectContext.GetObjectType(parent.Entry.Entity.GetType()), propertyName) :
                                   propertyName;
            }

            if (RelationName == null)
            {
                RelationName = relationName;
            }
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="DbDataRecordPropertyValues" /> class.
        /// </summary>
        /// <param name="internalContext"> The internal context. </param>
        /// <param name="type"> The type. </param>
        /// <param name="dataRecord"> The data record. </param>
        /// <param name="isEntity">
        ///     If set to <c>true</c> this is a dictionary for an entity, otherwise it is a dictionary for a complex object.
        /// </param>
        internal DbDataRecordPropertyValues(
            InternalContext internalContext, Type type, DbUpdatableDataRecord dataRecord, bool isEntity)
            : base(internalContext, type, isEntity)
        {
            DebugCheck.NotNull(dataRecord);

            _dataRecord = dataRecord;
        }
Ejemplo n.º 3
0
 public DbDataRecordPropertyValuesItem(
     DbUpdatableDataRecord dataRecord,
     int ordinal,
     object value)
 {
     this._dataRecord = dataRecord;
     this._ordinal    = ordinal;
     this._value      = value;
 }
Ejemplo n.º 4
0
 internal DbDataRecordPropertyValues(
     InternalContext internalContext,
     Type type,
     DbUpdatableDataRecord dataRecord,
     bool isEntity)
     : base(internalContext, type, isEntity)
 {
     this._dataRecord = dataRecord;
 }
Ejemplo n.º 5
0
        protected override IPropertyValuesItem GetItemImpl(string propertyName)
        {
            int    ordinal = this._dataRecord.GetOrdinal(propertyName);
            object obj     = this._dataRecord[ordinal];
            DbUpdatableDataRecord dataRecord = obj as DbUpdatableDataRecord;

            if (dataRecord != null)
            {
                obj = (object)new DbDataRecordPropertyValues(this.InternalContext, this._dataRecord.GetFieldType(ordinal), dataRecord, false);
            }
            else if (obj == DBNull.Value)
            {
                obj = (object)null;
            }
            return((IPropertyValuesItem) new DbDataRecordPropertyValuesItem(this._dataRecord, ordinal, obj));
        }
Ejemplo n.º 6
0
        /// <summary>Audit entity added.</summary>
        /// <param name="auditEntry">The audit entry.</param>
        /// <param name="record">The record.</param>
        /// <param name="prefix">The prefix.</param>
        public static void AuditEntityAdded(AuditEntry auditEntry, DbUpdatableDataRecord record, string prefix = "")
        {
            for (var i = 0; i < record.FieldCount; i++)
            {
                var name  = record.GetName(i);
                var value = record.GetValue(i);

                var valueRecord = value as DbUpdatableDataRecord;
                if (valueRecord != null)
                {
                    // Complex Type
                    AuditEntityAdded(auditEntry, valueRecord, string.Concat(prefix, name, "."));
                }
                else if (auditEntry.Parent.CurrentOrDefaultConfiguration.IsAuditedProperty(auditEntry.Entry, name))
                {
                    auditEntry.Properties.Add(new AuditEntryProperty(auditEntry, string.Concat(prefix, name), null, value));
                }
            }
        }
        public static void AuditEntityAdded(AuditEntry entry, DbUpdatableDataRecord record, string prefix = "")
        {
            for (var i = 0; i < record.FieldCount; i++)
            {
                var name = record.GetName(i);
                var value = record.GetValue(i);

                var valueRecord = value as DbUpdatableDataRecord;
                if (valueRecord != null)
                {
                    // Complex Type
                    AuditEntityAdded(entry, valueRecord, string.Concat(prefix, name, "."));
                }
                else
                {
                    entry.Properties.Add(new AuditEntryProperty(string.Concat(prefix, name), null, value));
                }
            }
        }
Ejemplo n.º 8
0
        public static void AuditEntityAdded(AuditEntry entry, DbUpdatableDataRecord record, string prefix = "")
        {
            for (var i = 0; i < record.FieldCount; i++)
            {
                var name  = record.GetName(i);
                var value = record.GetValue(i);

                var valueRecord = value as DbUpdatableDataRecord;
                if (valueRecord != null)
                {
                    // Complex Type
                    AuditEntityAdded(entry, valueRecord, string.Concat(prefix, name, "."));
                }
                else
                {
                    entry.Properties.Add(new AuditEntryProperty(string.Concat(prefix, name), null, value));
                }
            }
        }
        /// <summary>Audit entity added.</summary>
        /// <param name="auditEntry">The audit entry.</param>
        /// <param name="record">The record.</param>
        /// <param name="prefix">The prefix.</param>
        public static void AuditEntityAdded(AuditEntry auditEntry, DbUpdatableDataRecord record, string prefix = "")
        {
            for (var i = 0; i < record.FieldCount; i++)
            {
                var name = record.GetName(i);
                var value = record.GetValue(i);

                var valueRecord = value as DbUpdatableDataRecord;
                if (valueRecord != null)
                {
                    // Complex Type
                    AuditEntityAdded(auditEntry, valueRecord, string.Concat(prefix, name, "."));
                }
                else if (auditEntry.Parent.CurrentOrDefaultConfiguration.IsAuditedProperty(auditEntry.Entry, name))
                {
                    auditEntry.Properties.Add(new AuditEntryProperty(auditEntry, string.Concat(prefix, name), null, value));
                }
            }
        }
        public static void AuditEntityModified(Audit audit, AuditEntry entry, DbDataRecord orginalRecord, DbUpdatableDataRecord currentRecord, string prefix = "")
        {
            for (var i = 0; i < orginalRecord.FieldCount; i++)
            {
                var name = orginalRecord.GetName(i);
                var originalValue = orginalRecord.GetValue(i);
                var currentValue = currentRecord.GetValue(i);

                var valueRecord = originalValue as DbDataRecord;
                if (valueRecord != null)
                {
                    // Complex Type
                    AuditEntityModified(audit, entry, valueRecord, currentValue as DbUpdatableDataRecord, string.Concat(prefix, name, "."));
                }
                else
                {
                    if (audit.Configuration.IncludePropertyUnchanged || !Equals(currentValue, originalValue))
                    {
                        entry.Properties.Add(new AuditEntryProperty(string.Concat(prefix, name), originalValue, currentValue));
                    }
                }
            }
        }
        /// <summary>Audit entity added.</summary>
        /// <param name="auditEntry">The audit entry.</param>
        /// <param name="objectStateEntry">The object state entry.</param>
        /// <param name="record">The record.</param>
        /// <param name="prefix">The prefix.</param>
        public static void AuditEntityAdded(AuditEntry auditEntry, ObjectStateEntry objectStateEntry, DbUpdatableDataRecord record, string prefix = "")
        {
            for (var i = 0; i < record.FieldCount; i++)
            {
                var name  = record.GetName(i);
                var value = record.GetValue(i);
                var type  = record.GetFieldType(i);

                if (auditEntry.Parent.Configuration.UseNullForDBNullValue && value == DBNull.Value)
                {
                    value = null;
                }

                var valueRecord = value as DbUpdatableDataRecord;
                if (valueRecord != null)
                {
                    // Complex Type
                    AuditEntityAdded(auditEntry, objectStateEntry, valueRecord, string.Concat(prefix, name, "."));
                }
                else if (objectStateEntry.EntitySet.ElementType.KeyMembers.Any(x => x.Name == name) || auditEntry.Parent.CurrentOrDefaultConfiguration.IsAuditedProperty(auditEntry.Entry, string.Concat(prefix, name)))
                {
                    var auditEntryProperty = auditEntry.Parent.Configuration.AuditEntryPropertyFactory != null?
                                             auditEntry.Parent.Configuration.AuditEntryPropertyFactory(new AuditEntryPropertyArgs(auditEntry, objectStateEntry, string.Concat(prefix, name), null, value)) :
                                                 new AuditEntryProperty();

                    if (auditEntry.Parent.CurrentOrDefaultConfiguration.IgnoreEntityAddedDefaultValue && type != typeof(object) && value != null)
                    {
                        var checkDefaultValue = DefaultValue(type);
                        if (checkDefaultValue != null && checkDefaultValue.Equals(value))
                        {
                            value = null;
                        }
                    }

                    auditEntryProperty.Build(auditEntry, string.Concat(prefix, name), null, value);
                    auditEntry.Properties.Add(auditEntryProperty);
                }
            }
        }
        public static void AuditEntityModified(Audit audit, AuditEntry entry, DbDataRecord orginalRecord, DbUpdatableDataRecord currentRecord, string prefix = "")
        {
            for (var i = 0; i < orginalRecord.FieldCount; i++)
            {
                var name          = orginalRecord.GetName(i);
                var originalValue = orginalRecord.GetValue(i);
                var currentValue  = currentRecord.GetValue(i);

                var valueRecord = originalValue as DbDataRecord;
                if (valueRecord != null)
                {
                    // Complex Type
                    AuditEntityModified(audit, entry, valueRecord, currentValue as DbUpdatableDataRecord, string.Concat(prefix, name, "."));
                }
                else
                {
                    if (audit.Configuration.IncludePropertyUnchanged || !Equals(currentValue, originalValue))
                    {
                        entry.Properties.Add(new AuditEntryProperty(string.Concat(prefix, name), originalValue, currentValue));
                    }
                }
            }
        }
        /// <summary>Audit entity modified.</summary>
        /// <param name="audit">The audit to use to add changes made to the context.</param>
        /// <param name="entry">The entry.</param>
        /// <param name="objectStateEntry">The object state entry.</param>
        /// <param name="orginalRecord">The orginal record.</param>
        /// <param name="currentRecord">The current record.</param>
        /// <param name="prefix">The prefix.</param>
        public static void AuditEntityModified(Audit audit, AuditEntry entry, ObjectStateEntry objectStateEntry, DbDataRecord orginalRecord, DbUpdatableDataRecord currentRecord, string prefix = "")
        {
            for (var i = 0; i < orginalRecord.FieldCount; i++)
            {
                var name          = orginalRecord.GetName(i);
                var originalValue = orginalRecord.GetValue(i);
                var currentValue  = currentRecord.GetValue(i);

                var valueRecord = originalValue as DbDataRecord;
                if (valueRecord != null)
                {
                    // Complex Type
                    AuditEntityModified(audit, entry, objectStateEntry, valueRecord, currentValue as DbUpdatableDataRecord, string.Concat(prefix, name, "."));
                }

                else if (objectStateEntry.EntityKey.EntityKeyValues.Any(x => x.Key == name) ||
                         entry.Parent.CurrentOrDefaultConfiguration.IsAuditedProperty(entry.Entry, name))
                {
                    if (!audit.Configuration.IgnorePropertyUnchanged ||
                        objectStateEntry.EntityKey.EntityKeyValues.Any(x => x.Key == name) ||
                        !Equals(currentValue, originalValue))
                    {
                        var auditEntryProperty = entry.Parent.Configuration.AuditEntryPropertyFactory != null?
                                                 entry.Parent.Configuration.AuditEntryPropertyFactory(new AuditEntryPropertyArgs(entry, objectStateEntry, string.Concat(prefix, name), originalValue, currentValue)) :
                                                     new AuditEntryProperty();

                        auditEntryProperty.Build(entry, string.Concat(prefix, name), originalValue, currentValue);
                        entry.Properties.Add(auditEntryProperty);
                    }
                }
            }
        }
 public void Build(AuditEntry parent, string propertyName, object oldValue, DbUpdatableDataRecord dbUpdatableDataRecord, int dbUpdatableDataRecordPosition)
 {
     Build(parent, null, propertyName, oldValue, dbUpdatableDataRecord, dbUpdatableDataRecordPosition);
 }