コード例 #1
0
        private void AuditableEntity()
        {
            var modifiedEntries = ChangeTracker.Entries()
                                  .Where(x => x.Entity is IAuditableEntity &&
                                         (x.State == System.Data.Entity.EntityState.Added || x.State == System.Data.Entity.EntityState.Modified));

            foreach (var entry in modifiedEntries)
            {
                IAuditableEntity auditableEntity = entry.Entity as IAuditableEntity;
                IEntity <string> Entity          = entry.Entity as IEntity <string>;
                if (auditableEntity != null)
                {
                    string   identityName = Thread.CurrentPrincipal.Identity.Name;
                    DateTime now          = DateTime.UtcNow;

                    if (entry.State == System.Data.Entity.EntityState.Added)
                    {
                        Entity.Id = Guid.NewGuid().ToString();
                        auditableEntity.CreatedBy   = identityName;
                        auditableEntity.CreatedDate = now;
                    }
                    else
                    {
                        base.Entry(auditableEntity).Property(x => x.CreatedBy).IsModified   = false;
                        base.Entry(auditableEntity).Property(x => x.CreatedDate).IsModified = false;
                    }

                    auditableEntity.UpdatedBy   = identityName;
                    auditableEntity.UpdatedDate = now;
                }
            }
        }
コード例 #2
0
        public override int SaveChanges()
        {
            var modifiedEntries = ChangeTracker.Entries().Where(x => x.Entity is IAuditableEntity &&
                                                                (x.State == EntityState.Added || x.State == EntityState.Modified));

            try
            {
                foreach (var entry in modifiedEntries)
                {
                    IAuditableEntity entity = entry.Entity as IAuditableEntity;
                    if (entity != null)
                    {
                        DateTime now = DateTime.UtcNow;
                        if (entry.State == EntityState.Added)
                        {
                            entity.CreatedDate = now;
                            entity.Status      = true;
                        }
                        else
                        {
                            base.Entry(entity).Property(x => x.CreatedDate).IsModified = false;
                        }
                        entity.UpdatedDate = now;
                    }
                }

                return(base.SaveChanges());
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
            {
                var validationErrors = dbEx.EntityValidationErrors;
                var validationError  = validationErrors.SelectMany(x => x.ValidationErrors).ToList();
                throw dbEx;
            }
        }
コード例 #3
0
        public override int SaveChanges()
        {
            var modifiedEntries = ChangeTracker.Entries()
                                  .Where(x => x.Entity is IAuditableEntity &&
                                         (x.State == System.Data.Entity.EntityState.Added || x.State == System.Data.Entity.EntityState.Modified));

            foreach (var entry in modifiedEntries)
            {
                IAuditableEntity entity = entry.Entity as IAuditableEntity;
                if (entity != null)
                {
                    string   identityName = Thread.CurrentPrincipal.Identity.Name;
                    DateTime now          = DateTime.UtcNow;

                    if (entry.State == System.Data.Entity.EntityState.Added)
                    {
                        // entity.CreatedBy = identityName;
                        entity.CreatedDate = now;
                    }
                    else
                    {
                        // base.Entry(entity).Property(x => x.CreatedBy).IsModified = false;
                        base.Entry(entity).Property(x => x.CreatedDate).IsModified = false;
                    }

                    // entity.UpdatedBy = identityName;
                    entity.UpdatedDate = now;
                }
            }

            return(base.SaveChanges());
        }
コード例 #4
0
        protected void SetLastUpdated(IAuditableEntity entity, IEntityHeader user)
        {
            var date = DateTime.Now.ToJSONString();

            entity.LastUpdatedBy   = EntityHeader.Create(user.Id, user.Text);
            entity.LastUpdatedDate = date;
        }
コード例 #5
0
        public override int SaveChanges()
        {
            var modifiedEntries = ChangeTracker.Entries()
                                  .Where(x => x.Entity is IAuditableEntity &&
                                         (x.State == EntityState.Added || x.State == EntityState.Modified));

            foreach (var entry in modifiedEntries)
            {
                IAuditableEntity entity = entry.Entity as IAuditableEntity;
                if (entity != null)
                {
                    //TODO later for Web
                    string   identityName = new WindowsPrincipal(WindowsIdentity.GetCurrent()).Identity.Name;
                    DateTime now          = DateTime.UtcNow;

                    if (entry.State == EntityState.Added)
                    {
                        entity.CreatedBy   = identityName;
                        entity.CreatedDate = now;
                    }
                    else
                    {
                        base.Entry(entity).Property(x => x.CreatedBy).IsModified   = false;
                        base.Entry(entity).Property(x => x.CreatedDate).IsModified = false;
                    }

                    entity.UpdatedBy   = identityName;
                    entity.UpdatedDate = now;
                }
            }
            return(base.SaveChanges());
        }
コード例 #6
0
        public override int SaveChanges()
        {
            var modifiedEntries = ChangeTracker.Entries()
                                  .Where(x => x.Entity is IAuditableEntity &&
                                         (x.State == System.Data.Entity.EntityState.Added || x.State == System.Data.Entity.EntityState.Modified));

            foreach (var entry in modifiedEntries)
            {
                // IAuditableEntity
                IAuditableEntity auditableEntity = entry.Entity as IAuditableEntity;
                if (auditableEntity != null)
                {
                    ProcAuditableEntity(entry, auditableEntity);
                }

                // ISaveEntity
                ISaveEntity saveEntity = entry.Entity as ISaveEntity;
                if (saveEntity != null)
                {
                    ProcSaveEntity(saveEntity);
                }
            }

            return(base.SaveChanges());
        }
コード例 #7
0
        //DbSet<TEntity> Set<TEntity>() where TEntity : class;
        //DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity) where TEntity : class;
        //int SaveChanges();
        public override int SaveChanges()
        {
            var modifiedEntries = ChangeTracker.Entries()
                                  .Where(x => x.Entity is IAuditableEntity &&
                                         (x.State == EntityState.Added || x.State == EntityState.Modified));
            var currentUsername = curuser;

            // !string.IsNullOrEmpty(HttpContext.User?.Identity?.Name)
            //     ? HttpContext.Current.User.Identity.Name                : "SYSTEM";
            foreach (var entry in modifiedEntries)
            {
                IAuditableEntity entity = entry.Entity as IAuditableEntity;
                if (entity != null)
                {
                    //string identityName = Thread.CurrentPrincipal.Identity.Name;
                    DateTime now = DateTime.Now;
                    if (entry.State == EntityState.Added)
                    {
                        entity.UserCreated = currentUsername;
                        entity.DateCreated = now;
                    }
                    else
                    {
                        base.Entry(entity).Property(x => x.UserCreated).IsModified = false;
                        base.Entry(entity).Property(x => x.DateCreated).IsModified = false;
                    }
                    entity.UserModified = currentUsername;
                    entity.DateModified = now;
                }
            }
            return(base.SaveChanges());
        }
コード例 #8
0
 private void SetAuditParams(IAuditableEntity entity)
 {
     entity.CreatedBy       = EntityHeader.Create(Guid.NewGuid().ToId(), "dontcare");
     entity.LastUpdatedBy   = entity.CreatedBy;
     entity.CreationDate    = DateTime.Now.ToJSONString();
     entity.LastUpdatedDate = entity.CreationDate;
 }
コード例 #9
0
        public override int SaveChanges()
        {
            var modifiedEntries = ChangeTracker.Entries()
                                  .Where(x => x.Entity is IAuditableEntity &&
                                         (x.State == System.Data.Entity.EntityState.Added || x.State == System.Data.Entity.EntityState.Modified));

            foreach (var entry in modifiedEntries)
            {
                IAuditableEntity entity = entry.Entity as IAuditableEntity;
                if (entity != null)
                {
                    DateTime now = DateTime.UtcNow;

                    if (entry.State == System.Data.Entity.EntityState.Added)
                    {
                        //// TODO Set Created by and Updated By
                        entity.CreatedBy   = 0;
                        entity.CreatedDate = now;
                        entity.IsActive    = true;
                    }
                    else
                    {
                        base.Entry(entity).Property(x => x.CreatedBy).IsModified   = false;
                        base.Entry(entity).Property(x => x.CreatedDate).IsModified = false;
                        base.Entry(entity).Property(x => x.IsActive).IsModified    = false;
                    }
                    entity.UpdatedBy   = 0;
                    entity.UpdatedDate = now;
                }
            }

            return(base.SaveChanges());
        }
コード例 #10
0
        private void SetPropertiesLog()
        {
            var modifiedEntries = _entities.ChangeTracker.Entries().Where(x => x.Entity is IAuditableEntity &&
                                                                          (x.State == (EntityState)EntityState.Added || x.State == (EntityState)EntityState.Modified));

            foreach (var entry in modifiedEntries)
            {
                IAuditableEntity entity = entry.Entity as IAuditableEntity;
                if (entity != null)
                {
                    DateTime now = DateTime.UtcNow;

                    if (entry.State == EntityState.Added)
                    {
                        entity.IsActive    = true;
                        entity.CreatedBy   = UserName;
                        entity.CreatedDate = now;
                    }
                    else
                    {
                        _entities.Entry(entity).Property("CreatedBy").IsModified   = false;
                        _entities.Entry(entity).Property("CreatedDate").IsModified = false;

                        entity.UpdatedBy   = UserName;
                        entity.UpdatedDate = now;
                    }
                }
            }
        }
コード例 #11
0
        public static void UpdateAuditableEntities <T>(this T dbContext) where T : DbContext, IHttpDbContext
        {
            IEnumerable <EntityEntry> modifiedEntries = dbContext.ChangeTracker.Entries()
                                                        .Where(x => x.Entity is IAuditableEntity &&
                                                               (x.State == EntityState.Added ||
                                                                x.State == EntityState.Modified));

            DateTime now = DateTime.UtcNow;

            foreach (EntityEntry entry in modifiedEntries)
            {
                IAuditableEntity entity = (IAuditableEntity)entry.Entity;

                if (entry.State == EntityState.Added)
                {
                    entity.CreatedDate = now;
                    entity.CreatedBy   = dbContext.CurrentUserId;
                }
                else
                {
                    dbContext.Entry(entity).Property(x => x.CreatedBy).IsModified   = false;
                    dbContext.Entry(entity).Property(x => x.CreatedDate).IsModified = false;
                }

                entity.UpdatedDate = now;
                entity.UpdatedBy   = dbContext.CurrentUserId;
            }
        }
コード例 #12
0
        public override int SaveChanges()
        {
            var modifiedEntries = ChangeTracker.Entries()
                                  .Where(x => x.Entity is IAuditableEntity && (x.State == EntityState.Added || x.State == EntityState.Modified));

            foreach (var entry in modifiedEntries)
            {
                IAuditableEntity auditableEntity = entry.Entity as IAuditableEntity;

                if (auditableEntity != null)
                {
                    string   userName = Thread.CurrentPrincipal.Identity.Name;
                    DateTime now      = DateTime.UtcNow;

                    if (entry.State == EntityState.Added)
                    {
                        auditableEntity.CreatedAt = now;
                        auditableEntity.CreatedBy = userName;
                    }
                    else
                    {
                        base.Entry(auditableEntity).Property(e => e.CreatedAt).IsModified = false;
                        base.Entry(auditableEntity).Property(e => e.CreatedBy).IsModified = false;
                    }

                    auditableEntity.UpdatedAt = now;
                    auditableEntity.UpdatedBy = userName;
                }
            }

            return(base.SaveChanges());
        }
コード例 #13
0
        private void AuditEntity()
        {
            var modifiedEntries = ChangeTracker.Entries()
                                  .Where(x => x.Entity is IAuditableEntity &&
                                         (x.State == EntityState.Added || x.State == EntityState.Modified));

            foreach (var entry in modifiedEntries)
            {
                IAuditableEntity entity = entry.Entity as IAuditableEntity;
                if (entity != null)
                {
                    string identityName = Thread.CurrentPrincipal.Identity.Name;
                    var    now          = DateTime.UtcNow;

                    if (entry.State == EntityState.Added)
                    {
                        entity.CreatedBy   = identityName;
                        entity.CreatedDate = now;
                    }
                    else
                    {
                        base.Entry(entity).Property(x => x.CreatedBy).IsModified   = false;
                        base.Entry(entity).Property(x => x.CreatedDate).IsModified = false;
                    }

                    entity.UpdatedBy   = identityName;
                    entity.UpdatedDate = now;
                }
            }
        }
コード例 #14
0
        private void UpdateAuditEntities()
        {
            IEnumerable <EntityEntry> modifiedEntries = ChangeTracker.Entries()
                                                        .Where(x => x.Entity is IAuditableEntity && (x.State == EntityState.Added || x.State == EntityState.Modified));


            foreach (EntityEntry entry in modifiedEntries)
            {
                IAuditableEntity entity = (IAuditableEntity)entry.Entity;
                DateTime         now    = DateTime.UtcNow;

                if (entry.State == EntityState.Added)
                {
                    entity.CreatedDate = now;
                    entity.CreatedBy   = CurrentUserId;
                }
                else
                {
                    Entry(entity).Property(x => x.CreatedBy).IsModified   = false;
                    Entry(entity).Property(x => x.CreatedDate).IsModified = false;
                }

                entity.UpdatedDate = now;
                entity.UpdatedBy   = CurrentUserId;
            }
        }
コード例 #15
0
ファイル: blogContext.cs プロジェクト: phucduye53/blazorblog
        public override int SaveChanges()
        {
            var modifiedEntries = ChangeTracker.Entries()
                                  .Where(x => x.Entity is IAuditableEntity &&
                                         (x.State == Microsoft.EntityFrameworkCore.EntityState.Added || x.State == Microsoft.EntityFrameworkCore.EntityState.Modified));

            foreach (var entry in modifiedEntries)
            {
                IAuditableEntity entity = entry.Entity as IAuditableEntity;
                if (entity != null)
                {
                    string   identityName = _curUser;
                    DateTime now          = DateTime.UtcNow;

                    if (entry.State == Microsoft.EntityFrameworkCore.EntityState.Added)
                    {
                        entity.CreatedBy   = identityName;
                        entity.CreatedDate = now;
                    }
                    else
                    {
                        base.Entry(entity).Property(x => x.CreatedBy).IsModified   = false;
                        base.Entry(entity).Property(x => x.CreatedDate).IsModified = false;
                    }

                    entity.UpdatedBy   = identityName;
                    entity.UpdatedDate = now;
                }
            }

            return(base.SaveChanges());
        }
コード例 #16
0
ファイル: YamlServices.cs プロジェクト: LagoVista/StarterKit
 protected void AddAuditProperties(IAuditableEntity entity, DateTime creationTimeStamp, EntityHeader org, EntityHeader user)
 {
     entity.CreationDate    = creationTimeStamp.ToJSONString();
     entity.LastUpdatedDate = creationTimeStamp.ToJSONString();
     entity.CreatedBy       = user;
     entity.LastUpdatedBy   = user;
 }
コード例 #17
0
ファイル: AppContext.cs プロジェクト: cong1389/ThienPhat
        public virtual Task <int> CommitAsync()
        {
            IEnumerable <DbEntityEntry> dbEntityEntries =
                from x in base.ChangeTracker.Entries()
                where (!(x.Entity is IAuditableEntity) ? false : (x.State == EntityState.Added ? true : x.State == EntityState.Modified))
                select x;

            foreach (DbEntityEntry dbEntityEntry in dbEntityEntries)
            {
                IAuditableEntity entity = dbEntityEntry.Entity as IAuditableEntity;
                if (entity != null)
                {
                    string   name   = Thread.CurrentPrincipal.Identity.Name;
                    DateTime utcNow = DateTime.UtcNow;
                    if (dbEntityEntry.State != EntityState.Added)
                    {
                        base.Entry <IAuditableEntity>(entity).Property <string>((IAuditableEntity x) => x.CreatedBy).IsModified     = false;
                        base.Entry <IAuditableEntity>(entity).Property <DateTime>((IAuditableEntity x) => x.CreatedDate).IsModified = false;
                    }
                    else
                    {
                        entity.CreatedBy   = name;
                        entity.CreatedDate = utcNow;
                    }
                    entity.UpdatedBy   = name;
                    entity.UpdatedDate = new DateTime?(utcNow);
                }
            }
            return(this.SaveChangesAsync());
        }
コード例 #18
0
        public async Task <int> SaveChangesAsync()
        {
            var modifiedEntries = ChangeTracker.Entries()
                                  .Where(x => x.Entity is IAuditableEntity &&
                                         (x.State == EntityState.Added || x.State == EntityState.Modified));


            foreach (var entry in modifiedEntries)
            {
                IAuditableEntity entity = entry.Entity as IAuditableEntity;
                if (entity != null)
                {
                    string   identityName = _principal?.Identity.Name ?? "system"; // Thread.CurrentPrincipal.Identity.Name;
                    DateTime now          = DateTime.Now;

                    if (entry.State == EntityState.Added)
                    {
                        entity.CreatedBy   = identityName;
                        entity.CreatedDate = now;
                    }
                    else
                    {
                        Entry(entity).Property(x => x.CreatedBy).IsModified   = false;
                        Entry(entity).Property(x => x.CreatedDate).IsModified = false;
                    }
                    entity.UpdatedBy   = identityName;
                    entity.UpdatedDate = now;
                }
            }
            bool saveFailed;

            do
            {
                saveFailed = false;
                try
                {
                    return(await base.SaveChangesAsync());
                }
                catch (DbUpdateConcurrencyException e)
                {
                    saveFailed = true;
                    Console.WriteLine(e.Message);
                    return(-1001);
                }
                catch (DbUpdateException e)
                {
                    Console.WriteLine(e.Message);
                    saveFailed = true;
                    return(-1002);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    saveFailed = true;
                    return(-1003);
                }
            } while (saveFailed);
        }
コード例 #19
0
 public static void SaveEntity(IAuditableEntity entity)
 {
     entity.ModifiedBy = HttpContext.Current.User.Identity.Name;
     if (String.IsNullOrEmpty(entity.CreatedBy))    //assume new
     {
         entity.CreatedBy = HttpContext.Current.User.Identity.Name;
     }
     Bll.SaveEntity(entity);     //you might need to use generics
 }
コード例 #20
0
        protected void SetAuditProperties(IAuditableEntity entity)
        {
            var createDate = DateTime.Now.ToJSONString();

            entity.CreationDate    = createDate;
            entity.LastUpdatedDate = createDate;
            entity.CreatedBy       = UserEntityHeader;
            entity.LastUpdatedBy   = UserEntityHeader;
        }
コード例 #21
0
 public static void SetLastUpdatedFields(this IAuditableEntity entity, IEntityHeader user)
 {
     entity.LastUpdatedDate = DateTime.Now.ToJSONString();
     entity.LastUpdatedBy   = new EntityHeader()
     {
         Id   = user.Id,
         Text = user.Text
     };
 }
コード例 #22
0
        protected void SetUpdatedProperties(IAuditableEntity entity)
        {
            if (entity == null)
            {
                throw new NullReferenceException("NULL Entity Passed to SetUpdatedProperties");
            }

            entity.LastUpdatedDate = DateTime.Now.ToJSONString();
            entity.LastUpdatedBy   = UserEntityHeader;
        }
コード例 #23
0
        protected virtual void RefineCreateAudit(IAuditableEntity auditable, IUserIdentity identity)
        {
            auditable.CreationDate = Now;
            var userName = identity.Name;

            if (!string.IsNullOrWhiteSpace(userName))
            {
                auditable.CreatedBy = userName;
            }
        }
コード例 #24
0
        private void SetCreateInfo(object saveEntity, DateTime operateTime, int operateUserId, string opName)
        {
            IAuditableEntity iSaveEntity = saveEntity as IAuditableEntity;

            if (iSaveEntity != null)
            {
                iSaveEntity.CreateAt          = operateTime;
                iSaveEntity.CreateBy          = operateUserId;
                iSaveEntity.LastModifyComment = opName;
            }
        }
コード例 #25
0
        private void SetUpdateInfo(object updateEntity, DateTime operateTime, int operateUserId, string opName)
        {
            IAuditableEntity iUpdateEntity = updateEntity as IAuditableEntity;

            if (iUpdateEntity != null)
            {
                iUpdateEntity.LastModifyAt      = operateTime;
                iUpdateEntity.LastModifyBy      = operateUserId;
                iUpdateEntity.LastModifyComment = opName;
            }
        }
コード例 #26
0
        protected virtual void UpdateAuditableProperties()
        {
            var now    = DateTime.Now;
            int userId = -1;

            //if (System.Web.HttpContext.Current != null && System.Web.HttpContext.Current.Session != null && System.Web.HttpContext.Current.Session["CurrentAccountID"] != null)
            if (System.Web.HttpContext.Current != null && System.Web.HttpContext.Current.User != null && System.Web.HttpContext.Current.User.Identity != null)
            {
                int.TryParse(System.Web.HttpContext.Current.User.Identity.Name, out userId);
                //userId = Convert.ToInt32(System.Web.HttpContext.Current.Session["CurrentAccountID"]);
                //KMIH.Persistence.Security.IHCustomPrincipal iuser = System.Web.HttpContext.Current.User as KMIH.Persistence.Security.IHCustomPrincipal;
                //if (iuser != null) userId = iuser.UserId;
            }
            //bool b = long.TryParse(Thread.CurrentPrincipal.Identity.Name, out userId);
            var changedAuditableEntities = from entry in ChangeTracker.Entries <IAuditableEntity>()
                                           let state = entry.State
                                                       where
                                                       state.HasFlag(EntityState.Added) ||
                                                       state.HasFlag(EntityState.Modified) ||
                                                       state.HasFlag(EntityState.Deleted)
                                                       select entry;

            foreach (var entry in changedAuditableEntities)
            {
                IAuditableEntity entity = entry.Entity as IAuditableEntity;
                if (entity != null)
                {
                    switch (entry.State)
                    {
                    case EntityState.Added:
                        entity.CreatedTime  = now;
                        entity.CreatedBy    = userId;
                        entity.ModifiedTime = now;
                        entity.ModifiedBy   = userId;
                        entity.IsDeleted    = false;
                        break;

                    case EntityState.Modified:
                        entity.ModifiedTime = now;
                        entity.ModifiedBy   = userId;
                        //entity.IsDeleted = false;
                        break;

                    case EntityState.Deleted:
                        entry.State         = EntityState.Modified;
                        entity.ModifiedTime = now;
                        entity.ModifiedBy   = userId;
                        entity.IsDeleted    = true;
                        break;
                    }
                }
            }
        }
コード例 #27
0
        public override int SaveChanges()
        {
            try
            {
                var modifiedEntries = ChangeTracker.Entries()
                                      .Where(x => x.Entity is IAuditableEntity &&
                                             (x.State == System.Data.Entity.EntityState.Added || x.State == System.Data.Entity.EntityState.Modified));

                foreach (var entry in modifiedEntries)
                {
                    IAuditableEntity entity = entry.Entity as IAuditableEntity;
                    if (entity != null)
                    {
                        string   identityName = Thread.CurrentPrincipal.Identity.Name;
                        DateTime now          = DateTime.UtcNow;

                        if (entry.State == System.Data.Entity.EntityState.Added)
                        {
                            entity.CreatedBy   = identityName;
                            entity.CreatedDate = now;
                        }
                        else
                        {
                            base.Entry(entity).Property(x => x.CreatedBy).IsModified   = false;
                            base.Entry(entity).Property(x => x.CreatedDate).IsModified = false;
                        }

                        entity.UpdatedBy   = identityName;
                        entity.UpdatedDate = now;
                    }
                }
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
            {
                Exception raise = dbEx;
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        string message = string.Format("{0}:{1}",
                                                       validationErrors.Entry.Entity.ToString(),
                                                       validationError.ErrorMessage);
                        // raise a new exception nesting
                        // the current instance as InnerException
                        raise = new InvalidOperationException(message, raise);
                    }
                }

                throw raise;
            }

            return(base.SaveChanges());
        }
コード例 #28
0
        protected virtual void Committing()
        {
            try
            {
                int userId = 0;

                if (System.Web.HttpContext.Current != null)
                {
                    var sessionUserId = System.Web.HttpContext.Current.Session["UserId"];

                    if (sessionUserId != null)
                    {
                        userId = (int)sessionUserId;

                        var modifiedEntries = this._repository.TrackedEntries
                                              .Where(x => x.Entity is IAuditableEntity
                                                     &&
                                                     (x.State == System.Data.Entity.EntityState.Added ||
                                                      x.State == System.Data.Entity.EntityState.Modified
                                                     ));

                        foreach (var entry in modifiedEntries)
                        {
                            IAuditableEntity entity = entry.Entity as IAuditableEntity;

                            if (entity != null)
                            {
                                DateTime now = DateTime.UtcNow;

                                if (entry.State == System.Data.Entity.EntityState.Added)
                                {
                                    entity.CreatedBy    = userId;
                                    entity.CreationDate = now;
                                }
                                else
                                {
                                    entity.ModifiedBy       = userId;
                                    entity.ModificationDate = now;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

                log.Info(String.Format("Exception occured while updating history of IAuditableEntity {0}\n {1}",
                                       typeof(T).Name, ex.ToString()));
            }
        }
コード例 #29
0
 protected void ConcurrencyCheck(IAuditableEntity fromRepo, string updatedDateStamp)
 {
     if (fromRepo.LastUpdatedDate != updatedDateStamp)
     {
         throw new ValidationException(ValidationResource.Concurrency_Error, new System.Collections.Generic.List <Core.Validation.ErrorMessage>()
         {
             new Core.Validation.ErrorMessage(
                 ValidationResource.Concurrency_ErrorMessage
                 .Replace(Tokens.VALIDATION_USER_FULL_NAME, fromRepo.LastUpdatedBy.Text)
                 .Replace(Tokens.VALIDATION_DATESTAMP, fromRepo.LastUpdatedDate),
                 false)
         });
     }
 }
コード例 #30
0
        private void SetAuditFields(IAuditableEntity auditableEntity, string writeEvent)
        {
            if (auditableEntity == null) return;

            switch (writeEvent)
            {
                case "Insert":
                    auditableEntity.CreateDate = DateTime.UtcNow;
                    break;

                case "Update":
                    auditableEntity.EditDate = DateTime.UtcNow;
                    break;
            }
        }
コード例 #31
0
        public override Task <int> SaveChangesAsync(CancellationToken cancellationToken = default)
        {
            IEnumerable <EntityEntry> unsavedItems = ChangeTracker.Entries()
                                                     .Where(entity => entity.Entity is IAuditableEntity &&
                                                            (entity.State == EntityState.Added ||
                                                             entity.State == EntityState.Modified));

            foreach (EntityEntry item in unsavedItems)
            {
                IAuditableEntity entity = (IAuditableEntity)item.Entity;
                DateTime         now    = DateTime.Now;
                entity.UpdatedDate = now;
            }

            return(base.SaveChangesAsync(cancellationToken));
        }