public int Delete(MemberViewModel fromUI, string userId)
        {
            var result = 0;

            var memberToDb    = new Member();
            var memberLogToDb = new MemberLog();

            Mapper.Map(fromUI, memberToDb);
            Mapper.Map(fromUI, memberLogToDb);


            memberLogToDb.CreateUserId       = null;
            memberLogToDb.CreateDateTime     = null;
            memberLogToDb.LastModifyUserId   = null;
            memberLogToDb.LastModifyDateTime = null;
            memberLogToDb.DeleteUserId       = userId;
            memberLogToDb.DeleteDateTime     = this.TimeNow.Value;
            memberLogToDb.Id        = Guid.NewGuid();
            memberLogToDb.Member_Id = fromUI.Id;

            using (var dbContext = MemberDbContext.CreateContext())
            {
                dbContext.Member.Attach(memberToDb);

                var memberEntry = dbContext.Entry(memberToDb);
                memberEntry.State = EntityState.Deleted;

                dbContext.MemberLog.Add(memberLogToDb);
                result = dbContext.SaveChanges();
            }

            return(result);
        }
        public int Insert(MemberViewModel fromUI, string userId)
        {
            var result = 0;

            fromUI.CreateDateTime = this.TimeNow.Value;
            fromUI.CreateUserId   = userId;

            var memberTodB    = new Member();
            var memberLogToDb = new MemberLog();
            var identityToDb  = new Identity();
            var roleToDb      = new Role();

            Mapper.Map(fromUI, memberTodB);
            Mapper.Map(fromUI, memberLogToDb);
            Mapper.Map(fromUI, identityToDb);
            roleToDb = MapperRole(fromUI);

            memberLogToDb.Member_Id = memberTodB.Id;

            identityToDb.Member_Id = memberTodB.Id;


            using (var dbContext = MemberDbContext.CreateContext())
            {
                dbContext.Member.Add(memberTodB);
                dbContext.MemberLog.Add(memberLogToDb);
                dbContext.Role.Add(roleToDb);
                dbContext.Identity.Add(identityToDb);


                result = dbContext.SaveChanges();
            }

            return(result);
        }
        public int Update(MemberViewModel fromUI, string userId)
        {
            var result = 0;

            fromUI.LastModifyDateTime = this.TimeNow.Value;
            fromUI.LastModifyUserId   = userId;

            var memberToDb    = new Member();
            var memberLogToDb = new MemberLog();
            var identityToDb  = new Identity();
            var roleToDb      = new Role();

            Mapper.Map(fromUI, memberToDb);
            Mapper.Map(fromUI, identityToDb);
            Mapper.Map(fromUI, memberLogToDb);

            roleToDb = MapperRole(fromUI);
            roleToDb.LastModifyDateTime = this.TimeNow.Value;
            roleToDb.LastModifyUserId   = userId;

            memberLogToDb.Member_Id = memberToDb.Id;
            identityToDb.Member_Id  = memberToDb.Id;
            memberLogToDb.Id        = Guid.NewGuid();

            memberLogToDb.CreateUserId   = null;
            memberLogToDb.CreateDateTime = null;

            using (var dbContext = MemberDbContext.CreateContext())
            {
                /* dbContext.Member.Attach(memberToDb);
                 * dbContext.Identity.Attach(identityToDb);
                 * dbContext.Role.Attach(roleToDb);*/

                var memberEntry = dbContext.Entry(memberToDb);
                memberEntry.State = EntityState.Modified;
                memberEntry.Property(p => p.CreateUserId).IsModified   = false;
                memberEntry.Property(p => p.CreateDateTime).IsModified = false;

                var identityEntry = dbContext.Entry(identityToDb);
                identityEntry.State = EntityState.Modified;
                identityEntry.Property(p => p.CreateUserId).IsModified   = false;
                identityEntry.Property(p => p.CreateDateTime).IsModified = false;

                var roleEntry = dbContext.Entry(roleToDb);
                roleEntry.State = EntityState.Modified;
                roleEntry.Property(p => p.CreateUserId).IsModified   = false;
                roleEntry.Property(p => p.CreateDateTime).IsModified = false;


                dbContext.MemberLog.Add(memberLogToDb);
                result = dbContext.SaveChanges();
            }

            return(result);
        }
        public static void AddLog(string guidId, MemberLog log)
        {
            var            cacheSet  = new ShareCacheStruct <GuildMemberLog>();
            GuildMemberLog memberLog = cacheSet.FindKey(guidId);

            if (memberLog == null)
            {
                memberLog = new GuildMemberLog()
                {
                    GuildID = guidId
                };
                cacheSet.Add(memberLog, DefIdentityId);
            }
            int Count = memberLog.GuildLog.Count > LogMax ? memberLog.GuildLog.Count - LogMax : 0;

            for (int i = 0; i < Count; i++)
            {
                memberLog.GuildLog.RemoveAt(0);
            }
            memberLog.GuildLog.Add(log);
        }