Esempio n. 1
0
        public virtual Task <int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken())
        {
            var isContinue = true;

            if (FunctionsBeforeSaveChanges?.Get()?.Any() == true)
            {
                foreach (var funcModel in FunctionsBeforeSaveChanges.Get())
                {
                    var tempContinue = funcModel?.Func?.Invoke(DbContext.ChangeTracker.Entries()) ?? true;

                    if (!tempContinue)
                    {
                        isContinue = false;
                    }
                }
            }

            var entityStatesModel = SplitEntity();

            var result = isContinue ? DbContext.SaveChangesAsync(cancellationToken) : default;

            if (!isContinue || ActionsAfterSaveChanges?.Get()?.Any() != true)
            {
                return(result);
            }

            foreach (var actionModel in ActionsAfterSaveChanges.Get())
            {
                actionModel?.Action?.Invoke(entityStatesModel);
            }

            return(result);
        }
Esempio n. 2
0
        public virtual int SaveChanges(bool acceptAllChangesOnSuccess)
        {
            var isContinue = true;

            if (FunctionsBeforeSaveChanges?.Get()?.Any() == true)
            {
                foreach (var funcModel in FunctionsBeforeSaveChanges.Get())
                {
                    var tempContinue = funcModel?.Func?.Invoke(DbContext.ChangeTracker.Entries()) ?? true;

                    if (!tempContinue)
                    {
                        isContinue = false;
                    }
                }
            }

            var entityStatesModel = SplitEntity();

            var result = isContinue ? DbContext.SaveChanges(acceptAllChangesOnSuccess) : default;

            if (!isContinue || ActionsAfterSaveChanges?.Get()?.Any() != true)
            {
                return(result);
            }

            foreach (var actionModel in ActionsAfterSaveChanges.Get())
            {
                actionModel?.Action?.Invoke(entityStatesModel);
            }

            return(result);
        }