Example #1
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());
        }
        protected virtual void ProcSaveEntity(EntityEntry entry)
        {
            // ISaveEntity
            ISaveEntity saveEntity = entry.Entity as ISaveEntity;

            if (saveEntity != null)
            {
                saveEntity.OnSave(this);
            }
        }
Example #3
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
                IAuditableEntity auditableEntity = entry.Entity as IAuditableEntity;
                if (auditableEntity != null)
                {
                    ProcAuditableEntity(entry, auditableEntity);
                }

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

            // 削除対象のEntityで、IDeleteEntityを実装しているオブジェクトを見つける
            var deleteEntries = ChangeTracker.Entries()
                                .Where(x => x.Entity is IDeleteEntity &&
                                       (x.State == EntityState.Deleted));

            foreach (var entry in deleteEntries)
            {
                // IDeleteEntity
                IDeleteEntity deleteEntity = entry.Entity as IDeleteEntity;
                if (deleteEntity != null)
                {
                    ProcDeleteEntity(deleteEntity);
                }
            }

            return(base.SaveChanges());
        }
Example #4
0
 public void RegisterSaveEntity(ISaveEntity saveEntity)
 {
     saveEntityHolder.Add(saveEntity);
 }
Example #5
0
 private void ProcSaveEntity(ISaveEntity entity)
 {
     entity.OnSave();
 }