Exemplo n.º 1
0
 public static void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
     if (e.Entry.Entity is Article article)
     {
         ParseMarkdown(article);
     }
 }
 private static void OnEntityTrackedHandler(object sender, EntityTrackedEventArgs args)
 {
     if (args.Entry.Entity is BaseEntity entity && args.Entry.State == EntityState.Added && !args.FromQuery)
     {
         entity.CreatedOn = DateTime.UtcNow;
     }
 }
Exemplo n.º 3
0
        private void Tracked(object sender, EntityTrackedEventArgs e)
        {
            int keyValue = GetKeyValue(e.Entry.Entity);

            Console.WriteLine($@"Newly tracked {e.Entry.Entity.GetType()}, " +
                              $"{((e.FromQuery) ? "From" : "Not From")} Query, Key = {keyValue} as {e.Entry.State}");
        }
Exemplo n.º 4
0
 void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
     if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is IEntityDate entity)
     {
         entity.Created = DateTime.Now;
     }
 }
Exemplo n.º 5
0
 private void ChangeTrackerOnTracked(object sender, EntityTrackedEventArgs e)
 {
     if (e.Entry.Entity is EntityBase)
     {
     }
     //throw new NotImplementedException();
 }
Exemplo n.º 6
0
 private void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
     if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is BaseEntity entity)
     {
         entity.CreatedOn = DateTime.UtcNow;
     }
 }
Exemplo n.º 7
0
 void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
     if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is IHasCreation entity)
     {
         entity.Created_at = DateTime.UtcNow;
     }
 }
Exemplo n.º 8
0
 void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
     if (!e.FromQuery)
     {
         ProcessLastModified(e.Entry);
     }
 }
Exemplo n.º 9
0
 void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
     if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is IEntity entity)
     {
         entity.DateCreatedUtc      = DateTime.UtcNow;
         entity.DateLastModifiedUtc = DateTime.UtcNow;
     }
 }
 public static void OnMatchupAdded(object sender, EntityTrackedEventArgs e)
 {
     if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is Matchup matchup)
     {
         matchup.Roster1.MatchupId = matchup.MatchupId;
         matchup.Roster2.MatchupId = matchup.MatchupId;
     }
 }
Exemplo n.º 11
0
        private static void ChangeTrackerOnTracked(object sender, EntityTrackedEventArgs e)
        {
            if (e.FromQuery)
            {
                return;
            }

            UpdateTimestampableObjects(e.Entry);
        }
Exemplo n.º 12
0
        private void ChangeTracker_Tracked(object?sender, EntityTrackedEventArgs e)
        {
            var source = (e.FromQuery) ? "Database" : "Code";

            if (e.Entry.Entity is Car c)
            {
                Console.WriteLine($"Car entry {c.PetName} was added from {source}");
            }
        }
Exemplo n.º 13
0
 private void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
     if (e.Entry.State == EntityState.Added && e.Entry.Entity is DbEntity entity)
     {
         entity.Id             = Guid.NewGuid();
         entity.CreatedAt      = DateTime.UtcNow;
         entity.LastModifiedAt = DateTime.UtcNow;
     }
 }
Exemplo n.º 14
0
 // Auto Model CreateTime EditTime updates
 void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
     if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is IEntityDate entity)
     {
         entity.CreateTime = DateTimeOffset.Now;
     }
     if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is ApplicationUser user)
     {
         user.RegisterTime = DateTimeOffset.Now;
     }
 }
Exemplo n.º 15
0
        public static void OnObjectMaterialized(object sender, EntityTrackedEventArgs trackedEvent)
        {
            if (trackedEvent.FromQuery && trackedEvent.Entry.Entity is IBaseEntity entity)
            {
                entity.ModelState = ModelState.Unchanged;

                var originalValues = BuildOriginalValues(entity.GetType(), trackedEvent.Entry.OriginalValues);

                entity.SetOriginalValues(originalValues);
            }
        }
Exemplo n.º 16
0
        private void Tracked(object sender, EntityTrackedEventArgs args)
        {
            var trackingGuid = Guid.NewGuid();

            _trackingGuids[args.Entry.Entity] = trackingGuid;

            _connection.InvokeAsync(
                nameof(DaBeeHub.ChangeState),
                new DaBeeEntityEntry(args.Entry, trackingGuid),
                EntityState.Detached,
                args.FromQuery);

            IntroduceDelay();
        }
Exemplo n.º 17
0
        protected virtual void FillExtraPropertiesForTrackedEntities(EntityTrackedEventArgs e)
        {
            var entityType = e.Entry.Metadata.ClrType;

            if (entityType == null)
            {
                return;
            }

            if (!(e.Entry.Entity is IHasExtraProperties entity))
            {
                return;
            }

            if (!e.FromQuery)
            {
                return;
            }

            var objectExtension = ObjectExtensionManager.Instance.GetOrNull(entityType);

            if (objectExtension == null)
            {
                return;
            }

            foreach (var property in objectExtension.GetProperties())
            {
                if (!property.IsMappedToFieldForEfCore())
                {
                    continue;
                }

                /* Checking "currentValue != null" has a good advantage:
                 * Assume that you we already using a named extra property,
                 * then decided to create a field (entity extension) for it.
                 * In this way, it prevents to delete old value in the JSON and
                 * updates the field on the next save!
                 */

                var currentValue = e.Entry.CurrentValues[property.Name];
                if (currentValue != null)
                {
                    entity.ExtraProperties[property.Name] = currentValue;
                }
            }
        }
Exemplo n.º 18
0
        protected virtual void FillExtraPropertiesForTrackedEntities(EntityTrackedEventArgs e)
        {
            var entityType = e.Entry.Metadata.ClrType;

            if (entityType == null)
            {
                return;
            }

            if (!(e.Entry.Entity is IHasExtraProperties entity))
            {
                return;
            }

            if (!e.FromQuery)
            {
                return;
            }

            var objectExtension = ObjectExtensionManager.Instance.GetOrNull(entityType);

            if (objectExtension == null)
            {
                return;
            }

            foreach (var property in objectExtension.GetProperties())
            {
                if (!property.IsMappedToFieldForEfCore())
                {
                    continue;
                }

                /* 检查“currentValue != null“将会非常有用:
                 * 假设实体拥有额外的信息,
                 * 并创建了一个字段用于存储额外的信息
                 * 实体更新的时候不会删除Json中的旧值
                 */

                var currentValue = e.Entry.CurrentValues[property.Name];
                if (currentValue != null)
                {
                    entity.ExtraProperties[property.Name] = currentValue;
                }
            }
        }
Exemplo n.º 19
0
    protected virtual void OnEntityCreate(object sender, EntityTrackedEventArgs e)
    {
        var entity     = e.Entry.Entity;
        var entityType = entity.GetType();

        var implementsIEntity =
            entityType.GetInterfaces().Any(i => i.GetGenericTypeDefinition() == typeof(IEntity <>));

        if (!e.FromQuery && e.Entry.State == EntityState.Added && implementsIEntity)
        {
            var modifiedProperty = entityType.GetProperty(nameof(IEntity <object> .EditAt));
            modifiedProperty.SetValue(entity, DateTime.Now);

            var createdAtProperty = entityType.GetProperty(nameof(IEntity <object> .CreatedAt));
            createdAtProperty.SetValue(entity, DateTime.Now);
        }
    }
        /// <summary>Tracks the auditable entity asynchronous.</summary>
        /// <param name="argument">The <see cref="EntityTrackedEventArgs"/> instance containing the event data.</param>
        /// <returns></returns>
        protected async Task <bool> TrackAuditableEntityAsync([NotNull] EntityTrackedEventArgs argument)
        {
            bool b = false;

            switch (argument.Entry.State)
            {
            case EntityState.Detached:
            case EntityState.Unchanged:
                break;

            case EntityState.Deleted:
            case EntityState.Modified:
            case EntityState.Added:
                b = await TrackStatePrivateAsync(argument.Entry, argument.Entry.State);

                break;
            }

            return(b);
        }
Exemplo n.º 21
0
        private void OnEntityTracked(object sender, EntityTrackedEventArgs e)
        {
            if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is Review review)
            {
                review.Date = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss");
            }

            else if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is Vendor vendor)
            {
                vendor.DateCreated = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss");
            }

            else if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is Post post)
            {
                post.Date = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss");
            }

            else if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is Message msg)
            {
                msg.Date = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss");
            }
        }
        private void ChangeTracker_Tracked(object sender, EntityTrackedEventArgs e)
        {
            DateTime now = DateTime.Now;

            if (e.Entry.Entity is IEntityDate entity)
            {
                switch (e.Entry.State)
                {
                case EntityState.Added:
                    entity.DatePublished = now;
                    entity.DateModified  = now;
                    //For future use
                    //entity.CreatedBy = CurrentUser.GetUsername();
                    //entity.UpdatedBy = CurrentUser.GetUsername();
                    break;

                case EntityState.Modified:
                    //Update(entity);
                    Entry(entity).Property(x => x.DatePublished).IsModified = false;
                    entity.DateModified = now;
                    break;
                }
            }
        }
 private void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
 }
Exemplo n.º 24
0
 protected virtual void ChangeTracker_Tracked(object sender, EntityTrackedEventArgs e)
 {
     FillExtraPropertiesForTrackedEntities(e);
     PublishEventsForTrackedEntity(e.Entry);
 }
 void OnTracked(object sender, EntityTrackedEventArgs e)
 {
     //     if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is "EntidadeComAtributoLGPD")
     //entity.Created = DateTime.Now;
 }
Exemplo n.º 26
0
 void OnEntityCreated(object sender, EntityTrackedEventArgs e)
 {
     if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is DomainEntity entity)
     {
     }
 }
Exemplo n.º 27
0
 private void ChangeTracker_Tracked(object sender, EntityTrackedEventArgs e)
 {
     Console.WriteLine($"Marked for Tracking: {e.Entry.Entity}");
 }