예제 #1
0
            public override async ValueTask <int> SavedChangesAsync(
                SaveChangesCompletedEventData eventData, int result, CancellationToken cancellationToken = default)
            {
                await base.SavedChangesAsync(eventData, result, cancellationToken);

                return(777);
            }
예제 #2
0
 public int SavedChanges(SaveChangesCompletedEventData eventData, int result)
 {
     //be careful ,this will risks a deadlock.
     //when save data in aspnet core ,shuold use DbContext.SaveChangesAsync().
     SavedChangesAsync(eventData, result).GetAwaiter().GetResult();
     return(result);
 }
예제 #3
0
        public override ValueTask <int> SavedChangesAsync(SaveChangesCompletedEventData eventData,
                                                          int result,
                                                          CancellationToken cancellationToken = default)
        {
            Console.WriteLine($"Saved {result} No of changes.");

            return(new ValueTask <int>(result));
        }
        /// <summary>
        /// 拦截保存数据库成功
        /// </summary>
        /// <param name="eventData"></param>
        /// <param name="result"></param>
        /// <returns></returns>
        public override int SavedChanges(SaveChangesCompletedEventData eventData, int result)
        {
            dynamic dbContext = eventData.Context;

            dbContext.SavedChangesEventInner(eventData, result);

            return(base.SavedChanges(eventData, result));
        }
        /// <summary>
        /// 拦截保存数据库成功
        /// </summary>
        /// <param name="eventData"></param>
        /// <param name="result"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override ValueTask <int> SavedChangesAsync(SaveChangesCompletedEventData eventData, int result, CancellationToken cancellationToken = default)
        {
            dynamic dbContext = eventData.Context;

            dbContext.SavedChangesEventInner(eventData, result);

            return(base.SavedChangesAsync(eventData, result, cancellationToken));
        }
예제 #6
0
        public int SavedChanges(SaveChangesCompletedEventData eventData, int result)
        {
            for (var i = 0; i < _interceptors.Length; i++)
            {
                result = _interceptors[i].SavedChanges(eventData, result);
            }

            return(result);
        }
            public async ValueTask <int> SavedChangesAsync(
                SaveChangesCompletedEventData eventData, int result, CancellationToken cancellationToken = default)
            {
                for (var i = 0; i < _interceptors.Length; i++)
                {
                    result = await _interceptors[i].SavedChangesAsync(eventData, result, cancellationToken).ConfigureAwait(false);
                }

                return(result);
            }
예제 #8
0
            public virtual int SavedChanges(SaveChangesCompletedEventData eventData, int result)
            {
                Assert.NotNull(eventData.Context);

                Context            = eventData.Context;
                SavedChangesCalled = true;
                SyncCalled         = true;

                return(result);
            }
예제 #9
0
            public virtual ValueTask <int> SavedChangesAsync(
                SaveChangesCompletedEventData eventData, int result, CancellationToken cancellationToken = default)
            {
                Assert.NotNull(eventData.Context);

                Context            = eventData.Context;
                SavedChangesCalled = true;
                AsyncCalled        = true;

                return(new ValueTask <int>(result));
            }
예제 #10
0
    public int SavedChanges(SaveChangesCompletedEventData eventData, int result)
    {
        using (var auditContext = new AuditContext(_connectionString))
        {
            auditContext.Attach(_audit);
            _audit.Succeeded = true;
            _audit.EndTime   = DateTime.UtcNow;

            auditContext.SaveChanges();
        }

        return(result);
    }
        public async ValueTask <int> SavedChangesAsync(SaveChangesCompletedEventData eventData, int result, CancellationToken cancellationToken = default)
        {
            if (!(eventData.Context is TriggeredDbContext))
            {
                Debug.Assert(_triggerSession != null);

                await _triggerSession.RaiseAfterSaveTriggers(cancellationToken).ConfigureAwait(false);

                DelistTriggerSession(eventData);
            }

            return(result);
        }
        public int SavedChanges(SaveChangesCompletedEventData eventData, int result)
        {
            if (!(eventData.Context is TriggeredDbContext))
            {
                Debug.Assert(_triggerSession != null);

                _triggerSession.RaiseAfterSaveTriggers().GetAwaiter().GetResult();

                DelistTriggerSession(eventData);
            }

            return(result);
        }
예제 #13
0
    public async ValueTask <int> SavedChangesAsync(
        SaveChangesCompletedEventData eventData,
        int result,
        CancellationToken cancellationToken = default)
    {
        using (var auditContext = new AuditContext(_connectionString))
        {
            auditContext.Attach(_audit);
            _audit.Succeeded = true;
            _audit.EndTime   = DateTime.UtcNow;

            await auditContext.SaveChangesAsync(cancellationToken);
        }

        return(result);
    }
예제 #14
0
        public override async ValueTask <int> SavedChangesAsync(
            SaveChangesCompletedEventData eventData,
            int result,
            CancellationToken ct = default)
        {
            var entitiesSaved = eventData.Context.ChangeTracker.Entries <EntityEventable>()
                                .Select(po => po.Entity)
                                .Where(po => po.DomainEvents.Any())
                                .ToArray();

            foreach (var entity in entitiesSaved)
            {
                while (entity.DomainEvents.TryTake(out IDomainEvent domainEvent))
                {
                    await _mediator.Publish(domainEvent, ct);
                }
            }

            return(result);
        }
예제 #15
0
        public override int SavedChanges(SaveChangesCompletedEventData eventData, int result)
        {
            eventData.Context.ChangeTracker.DetectChanges();
            Debug.WriteLine(eventData.Context.ChangeTracker.DebugView.LongView);


            foreach (var entry in eventData.Context.ChangeTracker.Entries())
            {
                var auditMessage = entry.State switch
                {
                    EntityState.Deleted => CreateDeletedMessage(entry),
                    EntityState.Modified => CreateModifiedMessage(entry),
                    EntityState.Added => CreateAddedMessage(entry),
                    _ => null
                };

                if (auditMessage is not null)
                {
                    Console.WriteLine();
                }
            }
            //Debug.WriteLine($"{DateTime.Now},{result}");

            return(base.SavedChanges(eventData, result));
        }

        string CreateAddedMessage(EntityEntry entry)
        => entry.Properties.Aggregate(
            $"Inserting {entry.Metadata.DisplayName()} with ",
            (auditString, property) => auditString + $"{property.Metadata.Name}: '{property.CurrentValue}' ");

        string CreateModifiedMessage(EntityEntry entry)
        => entry.Properties.Where(property => property.IsModified || property.Metadata.IsPrimaryKey()).Aggregate(
            $"Updating {entry.Metadata.DisplayName()} with ",
            (auditString, property) => auditString + $"{property.Metadata.Name}: '{property.CurrentValue}' ");

        string CreateDeletedMessage(EntityEntry entry)
        => entry.Properties.Where(property => property.Metadata.IsPrimaryKey()).Aggregate(
            $"Deleting {entry.Metadata.DisplayName()} with ",
            (auditString, property) => auditString + $"{property.Metadata.Name}: '{property.CurrentValue}' ");
    }
 public override int SavedChanges(SaveChangesCompletedEventData eventData, int result)
 {
     return(SavedChangesAsync(eventData, result).GetAwaiter().GetResult());
 }
예제 #17
0
 /// <inheritdoc />
 public virtual int SavedChanges(SaveChangesCompletedEventData eventData, int result)
 => result;
        public override int SavedChanges(SaveChangesCompletedEventData eventData, int result)
        {
            this.DidSaveChanges(true);

            return(base.SavedChanges(eventData, result));
        }
예제 #19
0
 public override int SavedChanges(SaveChangesCompletedEventData eventData, int result)
 {
     Console.WriteLine("after save");
     return(base.SavedChanges(eventData, result));
 }
 public override int SavedChanges(SaveChangesCompletedEventData eventData, int result)
 {
     _helper.EndSaveChanges(_auditContext, _auditScope, result);
     return(base.SavedChanges(eventData, result));
 }
        public override ValueTask <int> SavedChangesAsync(SaveChangesCompletedEventData eventData, int result, CancellationToken cancellationToken = default)
        {
            this.DidSaveChanges(true);

            return(base.SavedChangesAsync(eventData, result, cancellationToken));
        }
예제 #22
0
 public ValueTask <int> SavedChangesAsync(SaveChangesCompletedEventData eventData, int result,
                                          CancellationToken cancellationToken = new CancellationToken())
 {
     return(new ValueTask <int>(result));
 }
예제 #23
0
 public int SavedChanges(SaveChangesCompletedEventData eventData, int result)
 {
     return(result);
 }
 public override int SavedChanges(SaveChangesCompletedEventData eventData, int result)
 {
     Console.WriteLine($"changes:{eventData.EntitiesSavedCount}");
     return(base.SavedChanges(eventData, result));
 }
예제 #25
0
        public async ValueTask <int> SavedChangesAsync(SaveChangesCompletedEventData eventData, int result, CancellationToken cancellationToken = default)
        {
            await _saveChangesLifetime.AfterSaveChangesAsync(_efcoreEntries);

            return(result);
        }
예제 #26
0
            public override int SavedChanges(SaveChangesCompletedEventData eventData, int result)
            {
                base.SavedChanges(eventData, result);

                return(777);
            }
        public override async ValueTask <int> SavedChangesAsync(SaveChangesCompletedEventData eventData, int result, CancellationToken cancellationToken = default)
        {
            await _helper.EndSaveChangesAsync(_auditContext, _auditScope, result);

            return(await base.SavedChangesAsync(eventData, result, cancellationToken));
        }
예제 #28
0
 public async ValueTask <int> SavedChangesAsync(SaveChangesCompletedEventData eventData, int result, CancellationToken cancellationToken = new())
예제 #29
0
 public override async ValueTask <int> SavedChangesAsync(SaveChangesCompletedEventData eventData, int result, CancellationToken cancellationToken = default)
 {
     var aggregateRoots = eventData.Context
                          .ChangeTracker.Entries()
                          .Where(e => e.Entity != null && e is { Entity: IAggregateRoot _ })
예제 #30
0
 public override int SavedChanges(SaveChangesCompletedEventData eventData, int result)
 {
     Debug.WriteLine($"Dude {result}");
     return(base.SavedChanges(eventData, result));
 }