/// <summary>
        ///     保存前的操作
        /// </summary>
        /// <param name="data">数据</param>
        /// <param name="isAdd">是否为新增</param>
        /// <returns>如果为否将阻止后续操作</returns>
        protected override bool OnSaving(PositionPersonnelData data, bool isAdd)
        {
            var personnel = new PersonnelData
            {
                FullName = data.Personnel,
                Six      = data.Six,
                Birthday = data.Birthday,
                Tel      = data.Tel,
                RoleId   = data.RoleId,
                Mobile   = data.Mobile
            };
            var access = new PersonnelDataAccess();

            if (data.PersonnelId == 0)
            {
                access.Insert(personnel);
                data.PersonnelId = personnel.Id;
            }
            else
            {
                personnel.Id = data.PersonnelId;
                access.Update(personnel);
            }
            return(base.OnSaving(data, isAdd));
        }
 /// <summary>
 ///     保存完成后期处理(Insert或Update)
 /// </summary>
 /// <param name="entity"></param>
 protected sealed override void OnDataSaved(DataOperatorType operatorType, PersonnelData entity)
 {
     using (var proxy = new RedisProxy(RedisProxy.DbComboCache))
     {
         proxy.RemoveKey(treeKey);
         proxy.RemoveKey(comboKey);
     }
 }
 /// <summary>
 /// 载入数据
 /// </summary>
 /// <param name="reader">数据读取器</param>
 /// <param name="entity">读取数据的实体</param>
 protected sealed override void LoadEntity(MySqlDataReader reader, PersonnelData entity)
 {
     using (new EditScope(entity.__EntityStatus, EditArrestMode.All, false))
     {
         entity._id = (int)reader.GetInt32(0);
         if (!reader.IsDBNull(1))
         {
             entity._fullname = reader.GetString(1).ToString();
         }
         entity._six = (bool)reader.GetBoolean(2);
         if (!reader.IsDBNull(3))
         {
             try{ entity._birthday = reader.GetMySqlDateTime(3).Value; }catch {}
         }
         if (!reader.IsDBNull(4))
         {
             entity._tel = reader.GetString(4).ToString();
         }
         if (!reader.IsDBNull(5))
         {
             entity._mobile = reader.GetString(5).ToString();
         }
         if (!reader.IsDBNull(6))
         {
             entity._memo = reader.GetString(6).ToString();
         }
         if (!reader.IsDBNull(7))
         {
             entity._datastate = (DataStateType)reader.GetInt32(7);
         }
         entity._isfreeze = (bool)reader.GetBoolean(8);
         entity._authorid = (int)reader.GetInt32(9);
         if (!reader.IsDBNull(10))
         {
             try{ entity._adddate = reader.GetMySqlDateTime(10).Value; }catch {}
         }
         entity._lastreviserid = (int)reader.GetInt32(11);
         if (!reader.IsDBNull(12))
         {
             try{ entity._lastmodifydate = reader.GetMySqlDateTime(12).Value; }catch {}
         }
         if (!reader.IsDBNull(13))
         {
             entity._auditstate = (AuditStateType)reader.GetInt32(13);
         }
         entity._auditorid = (int)reader.GetInt32(14);
         if (!reader.IsDBNull(15))
         {
             try{ entity._auditdate = reader.GetMySqlDateTime(15).Value; }catch {}
         }
         entity._roleid = (int)reader.GetInt32(16);
         if (!reader.IsDBNull(17))
         {
             entity._role = reader.GetString(17).ToString();
         }
         entity._userid = (int)reader.GetInt32(18);
     }
 }
 /// <summary>
 /// 读取Form传过来的数据
 /// </summary>
 /// <param name="data">数据</param>
 /// <param name="convert">转化器</param>
 protected void DefaultReadFormData(PersonnelData data, FormConvert convert)
 {
     //数据
     data.FullName = convert.ToString("FullName");
     data.Six      = convert.ToBoolean("Six");
     data.Birthday = convert.ToDateTime("Birthday");
     data.Tel      = convert.ToString("Tel");
     data.Mobile   = convert.ToString("Mobile");
     //备注
     data.Memo = convert.ToString("Memo");
 }
        public void Apply()
        {
            var firstByte = 0x0047141F;
            var lastByte  = 0x00478F18;

            // Open file and write
            using (var executableConnection = new ExecutableConnection(_executableFilePath))
            {
                // Create byte array of NOPs
                var nopInstructions = new byte[lastByte + 1 - firstByte];
                for (var i = 0; i < nopInstructions.Length; i++)
                {
                    nopInstructions[i] = 0x90;
                }

                // Write byte array of NOPs
                executableConnection.WriteByteArray(InstructionHelper.CalculateRealPositionFromVirtualPosition(firstByte), nopInstructions);

                // Get the data-laden instructions
                var teamInstructions      = TeamData.GetInstructions();
                var personnelInstructions = PersonnelData.GetInstructions();
                var driverInstructions    = DriverData.GetInstructions();

                // Write instructions
                var writePosition = InstructionHelper.CalculateRealPositionFromVirtualPosition(firstByte);
                executableConnection.WriteByteArray(writePosition, teamInstructions);
                writePosition += teamInstructions.Length;
                executableConnection.WriteByteArray(writePosition, personnelInstructions);
                writePosition += personnelInstructions.Length;
                executableConnection.WriteByteArray(writePosition, driverInstructions);

                // Apply track changes
                firstByte = 0x005031C6;
                lastByte  = 0x00503EE5;

                // Create byte array of NOPs
                var nopTrackInstructions = new byte[lastByte + 1 - firstByte];
                for (var i = 0; i < nopTrackInstructions.Length; i++)
                {
                    nopTrackInstructions[i] = 0x90;
                }

                // Write byte array of NOPs
                executableConnection.WriteByteArray(InstructionHelper.CalculateRealPositionFromVirtualPosition(firstByte), nopTrackInstructions);

                // Get the data-laden instructions
                var trackInstructions = TrackData.GetInstructions();
                writePosition = InstructionHelper.CalculateRealPositionFromVirtualPosition(firstByte);
                executableConnection.WriteByteArray(writePosition, trackInstructions);
            }
        }
 /// <summary>
 /// 载入数据
 /// </summary>
 /// <param name="reader">数据读取器</param>
 /// <param name="entity">读取数据的实体</param>
 public override void SimpleLoad(MySqlDataReader reader, PersonnelData entity)
 {
     using (new EditScope(entity.__EntityStatus, EditArrestMode.All, false))
     {
         entity._id = (int)reader.GetInt32(0);
         if (!reader.IsDBNull(1))
         {
             entity._fullname = reader.GetString(1).ToString();
         }
         entity._six = (bool)reader.GetBoolean(2);
         if (!reader.IsDBNull(3))
         {
             try{ entity._birthday = reader.GetMySqlDateTime(3).Value; }catch {}
         }
         if (!reader.IsDBNull(4))
         {
             entity._tel = reader.GetString(4).ToString();
         }
         if (!reader.IsDBNull(5))
         {
             entity._mobile = reader.GetString(5).ToString();
         }
         if (!reader.IsDBNull(6))
         {
             entity._memo = reader.GetString(6).ToString();
         }
         if (!reader.IsDBNull(7))
         {
             entity._datastate = (DataStateType)reader.GetInt32(7);
         }
         entity._isfreeze = (bool)reader.GetBoolean(8);
         if (!reader.IsDBNull(9))
         {
             entity._auditstate = (AuditStateType)reader.GetInt32(9);
         }
         if (!reader.IsDBNull(10))
         {
             entity._role = reader.GetString(10).ToString();
         }
         entity._userid = (int)reader.GetInt32(11);
     }
 }
 /// <summary>
 /// 设置插入数据的命令
 /// </summary>
 /// <param name="entity">实体对象</param>
 /// <param name="cmd">命令</param>
 /// <returns>返回真说明要取主键</returns>
 protected sealed override bool SetInsertCommand(PersonnelData entity, MySqlCommand cmd)
 {
     cmd.CommandText = InsertSqlCode;
     CreateFullSqlParameter(entity, cmd);
     return(true);
 }
 /// <summary>
 /// 设置更新数据的命令
 /// </summary>
 /// <param name="entity">实体对象</param>
 /// <param name="cmd">命令</param>
 protected sealed override void SetUpdateCommand(PersonnelData entity, MySqlCommand cmd)
 {
     cmd.CommandText = UpdateSqlCode;
     CreateFullSqlParameter(entity, cmd);
 }
        /// <summary>
        /// 设置插入数据的命令
        /// </summary>
        /// <param name="entity">实体对象</param>
        /// <param name="cmd">命令</param>
        /// <returns>返回真说明要取主键</returns>
        private void CreateFullSqlParameter(PersonnelData entity, MySqlCommand cmd)
        {
            //02:标识(Id)
            cmd.Parameters.Add(new MySqlParameter("Id", MySqlDbType.Int32)
            {
                Value = entity.Id
            });
            //04:姓名(FullName)
            var isNull    = string.IsNullOrWhiteSpace(entity.FullName);
            var parameter = new MySqlParameter("FullName", MySqlDbType.VarString, isNull ? 10 : (entity.FullName).Length);

            if (isNull)
            {
                parameter.Value = DBNull.Value;
            }
            else
            {
                parameter.Value = entity.FullName;
            }
            cmd.Parameters.Add(parameter);
            //05:性别(Six)
            cmd.Parameters.Add(new MySqlParameter("Six", MySqlDbType.Byte)
            {
                Value = entity.Six ? (byte)1 : (byte)0
            });
            //06:生日(Birthday)
            isNull    = entity.Birthday.Year < 1900;
            parameter = new MySqlParameter("Birthday", MySqlDbType.DateTime);
            if (isNull)
            {
                parameter.Value = DBNull.Value;
            }
            else
            {
                parameter.Value = entity.Birthday;
            }
            cmd.Parameters.Add(parameter);
            //07:电话(Tel)
            isNull    = string.IsNullOrWhiteSpace(entity.Tel);
            parameter = new MySqlParameter("Tel", MySqlDbType.VarString, isNull ? 10 : (entity.Tel).Length);
            if (isNull)
            {
                parameter.Value = DBNull.Value;
            }
            else
            {
                parameter.Value = entity.Tel;
            }
            cmd.Parameters.Add(parameter);
            //08:手机(Mobile)
            isNull    = string.IsNullOrWhiteSpace(entity.Mobile);
            parameter = new MySqlParameter("Mobile", MySqlDbType.VarString, isNull ? 10 : (entity.Mobile).Length);
            if (isNull)
            {
                parameter.Value = DBNull.Value;
            }
            else
            {
                parameter.Value = entity.Mobile;
            }
            cmd.Parameters.Add(parameter);
            //09:备注(Memo)
            isNull    = string.IsNullOrWhiteSpace(entity.Memo);
            parameter = new MySqlParameter("Memo", MySqlDbType.Text, isNull ? 10 : (entity.Memo).Length);
            if (isNull)
            {
                parameter.Value = DBNull.Value;
            }
            else
            {
                parameter.Value = entity.Memo;
            }
            cmd.Parameters.Add(parameter);
            //32:数据状态(DataState)
            cmd.Parameters.Add(new MySqlParameter("DataState", MySqlDbType.Int32)
            {
                Value = (int)entity.DataState
            });
            //33:数据是否已冻结(IsFreeze)
            cmd.Parameters.Add(new MySqlParameter("IsFreeze", MySqlDbType.Byte)
            {
                Value = entity.IsFreeze ? (byte)1 : (byte)0
            });
            //35:制作人(AuthorID)
            cmd.Parameters.Add(new MySqlParameter("AuthorID", MySqlDbType.Int32)
            {
                Value = entity.AuthorID
            });
            //37:制作时间(AddDate)
            isNull    = entity.AddDate.Year < 1900;
            parameter = new MySqlParameter("AddDate", MySqlDbType.DateTime);
            if (isNull)
            {
                parameter.Value = DBNull.Value;
            }
            else
            {
                parameter.Value = entity.AddDate;
            }
            cmd.Parameters.Add(parameter);
            //39:最后修改者(LastReviserID)
            cmd.Parameters.Add(new MySqlParameter("LastReviserID", MySqlDbType.Int32)
            {
                Value = entity.LastReviserID
            });
            //41:最后修改日期(LastModifyDate)
            isNull    = entity.LastModifyDate.Year < 1900;
            parameter = new MySqlParameter("LastModifyDate", MySqlDbType.DateTime);
            if (isNull)
            {
                parameter.Value = DBNull.Value;
            }
            else
            {
                parameter.Value = entity.LastModifyDate;
            }
            cmd.Parameters.Add(parameter);
            //43:审核状态(AuditState)
            cmd.Parameters.Add(new MySqlParameter("AuditState", MySqlDbType.Int32)
            {
                Value = (int)entity.AuditState
            });
            //45:审核人(AuditorId)
            cmd.Parameters.Add(new MySqlParameter("AuditorId", MySqlDbType.Int32)
            {
                Value = entity.AuditorId
            });
            //47:审核时间(AuditDate)
            isNull    = entity.AuditDate.Year < 1900;
            parameter = new MySqlParameter("AuditDate", MySqlDbType.DateTime);
            if (isNull)
            {
                parameter.Value = DBNull.Value;
            }
            else
            {
                parameter.Value = entity.AuditDate;
            }
            cmd.Parameters.Add(parameter);
            //48:角色外键(RoleId)
            cmd.Parameters.Add(new MySqlParameter("RoleId", MySqlDbType.Int32)
            {
                Value = entity.RoleId
            });
            //49:角色(Role)
            isNull    = string.IsNullOrWhiteSpace(entity.Role);
            parameter = new MySqlParameter("Role", MySqlDbType.VarString, isNull ? 10 : (entity.Role).Length);
            if (isNull)
            {
                parameter.Value = DBNull.Value;
            }
            else
            {
                parameter.Value = entity.Role;
            }
            cmd.Parameters.Add(parameter);
            //51:系统用户外键(UserId)
            cmd.Parameters.Add(new MySqlParameter("UserId", MySqlDbType.Int32)
            {
                Value = entity.UserId
            });
        }
        /// <summary>
        /// 取得仅更新的SQL语句
        /// </summary>
        internal string GetModifiedSqlCode(PersonnelData data)
        {
            if (data.__EntityStatusNull || !data.__EntityStatus.IsModified)
            {
                return(";");
            }
            StringBuilder sql = new StringBuilder();

            sql.AppendLine("UPDATE `tb_sys_personnel` SET");
            //姓名
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_FullName] > 0)
            {
                sql.AppendLine("       `full_name` = ?FullName");
            }
            //性别
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_Six] > 0)
            {
                sql.AppendLine("       `six` = ?Six");
            }
            //生日
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_Birthday] > 0)
            {
                sql.AppendLine("       `birthday` = ?Birthday");
            }
            //电话
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_Tel] > 0)
            {
                sql.AppendLine("       `tel` = ?Tel");
            }
            //手机
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_Mobile] > 0)
            {
                sql.AppendLine("       `mobile` = ?Mobile");
            }
            //备注
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_Memo] > 0)
            {
                sql.AppendLine("       `memo` = ?Memo");
            }
            //数据状态
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_DataState] > 0)
            {
                sql.AppendLine("       `data_state` = ?DataState");
            }
            //数据是否已冻结
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_IsFreeze] > 0)
            {
                sql.AppendLine("       `is_freeze` = ?IsFreeze");
            }
            //制作人
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_AuthorID] > 0)
            {
                sql.AppendLine("       `author_id` = ?AuthorID");
            }
            //制作时间
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_AddDate] > 0)
            {
                sql.AppendLine("       `add_date` = ?AddDate");
            }
            //最后修改者
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_LastReviserID] > 0)
            {
                sql.AppendLine("       `last_reviser_id` = ?LastReviserID");
            }
            //最后修改日期
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_LastModifyDate] > 0)
            {
                sql.AppendLine("       `last_modify_date` = ?LastModifyDate");
            }
            //审核状态
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_AuditState] > 0)
            {
                sql.AppendLine("       `audit_state` = ?AuditState");
            }
            //审核人
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_AuditorId] > 0)
            {
                sql.AppendLine("       `auditor_id` = ?AuditorId");
            }
            //审核时间
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_AuditDate] > 0)
            {
                sql.AppendLine("       `audit_date` = ?AuditDate");
            }
            //角色外键
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_RoleId] > 0)
            {
                sql.AppendLine("       `role_id` = ?RoleId");
            }
            //系统用户外键
            if (data.__EntityStatus.ModifiedProperties[PersonnelData.Real_UserId] > 0)
            {
                sql.AppendLine("       `user_id` = ?UserId");
            }
            sql.Append(" WHERE `id` = ?Id;");
            return(sql.ToString());
        }