コード例 #1
0
ファイル: Article.cs プロジェクト: zhantong/BearBlog-dotNet
 public static void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
     if (e.Entry.Entity is Article article)
     {
         ParseMarkdown(article);
     }
 }
コード例 #2
0
 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;
     }
 }
コード例 #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}");
        }
コード例 #4
0
ファイル: DataContext.cs プロジェクト: LogicalPhallacy/Kavita
 void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
     if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is IEntityDate entity)
     {
         entity.Created = DateTime.Now;
     }
 }
コード例 #5
0
 private void ChangeTrackerOnTracked(object sender, EntityTrackedEventArgs e)
 {
     if (e.Entry.Entity is EntityBase)
     {
     }
     //throw new NotImplementedException();
 }
コード例 #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;
     }
 }
コード例 #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;
     }
 }
コード例 #8
0
ファイル: DataContext.cs プロジェクト: satishchatap/zellar
 void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
     if (!e.FromQuery)
     {
         ProcessLastModified(e.Entry);
     }
 }
コード例 #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;
     }
 }
コード例 #10
0
 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;
     }
 }
コード例 #11
0
        private static void ChangeTrackerOnTracked(object sender, EntityTrackedEventArgs e)
        {
            if (e.FromQuery)
            {
                return;
            }

            UpdateTimestampableObjects(e.Entry);
        }
コード例 #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}");
            }
        }
コード例 #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;
     }
 }
コード例 #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;
     }
 }
コード例 #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);
            }
        }
コード例 #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();
        }
コード例 #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;
                }
            }
        }
コード例 #18
0
ファイル: RocketDbContext.cs プロジェクト: AiwinsFx/Rocket
        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;
                }
            }
        }
コード例 #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);
        }
    }
コード例 #20
0
        /// <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);
        }
コード例 #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");
            }
        }
コード例 #22
0
        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;
                }
            }
        }
コード例 #23
0
 private void OnEntityTracked(object sender, EntityTrackedEventArgs e)
 {
 }
コード例 #24
0
 protected virtual void ChangeTracker_Tracked(object sender, EntityTrackedEventArgs e)
 {
     FillExtraPropertiesForTrackedEntities(e);
     PublishEventsForTrackedEntity(e.Entry);
 }
コード例 #25
0
 void OnTracked(object sender, EntityTrackedEventArgs e)
 {
     //     if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is "EntidadeComAtributoLGPD")
     //entity.Created = DateTime.Now;
 }
コード例 #26
0
 void OnEntityCreated(object sender, EntityTrackedEventArgs e)
 {
     if (!e.FromQuery && e.Entry.State == EntityState.Added && e.Entry.Entity is DomainEntity entity)
     {
     }
 }
コード例 #27
0
 private void ChangeTracker_Tracked(object sender, EntityTrackedEventArgs e)
 {
     Console.WriteLine($"Marked for Tracking: {e.Entry.Entity}");
 }