예제 #1
0
        /// <summary>
        ///     关系映射
        /// </summary>
        /// <param name="type">实体类Type</param>
        internal SetPhysicsMap(Type type)
        {
            Type = type;
            MapList = new Dictionary<PropertyInfo, FieldMapState>();
            PrimaryFields = new Dictionary<PropertyInfo, FieldAttribute>();

            // 循环Set的字段
            foreach (var propertyInfo in Type.GetProperties())
            {
                #region 获取字段已标记的特性

                var modelAtt = new FieldMapState();
                var attrs = propertyInfo.GetCustomAttributes(false);
                foreach (var item in attrs)
                {
                    // 字段
                    if (item is FieldAttribute) { modelAtt.Field = (FieldAttribute)item; continue; }
                    // 字符串长度
                    if (item is StringLengthAttribute) { modelAtt.StringLength = (StringLengthAttribute)item; continue; }
                    // 是否必填
                    if (item is RequiredAttribute) { modelAtt.Required = (RequiredAttribute)item; continue; }
                    // 字段描述
                    if (item is DisplayAttribute) { modelAtt.Display = (DisplayAttribute)item; continue; }
                    // 值的长度
                    if (item is RangeAttribute) { modelAtt.Range = (RangeAttribute)item; continue; }
                    // 正则
                    if (item is RegularExpressionAttribute) { modelAtt.RegularExpression = (RegularExpressionAttribute)item; continue; }
                }
                #endregion

                #region 初始化字段映射

                if (modelAtt.Field == null) { modelAtt.Field = new FieldAttribute { Name = propertyInfo.Name }; }
                if (string.IsNullOrEmpty(modelAtt.Field.Name)) { modelAtt.Field.Name = propertyInfo.Name; }
                if (modelAtt.Field.IsMap)
                {
                    // 主键
                    if (modelAtt.Field.IsPrimaryKey) { PrimaryFields[propertyInfo] = modelAtt.Field; }
                    // 标识
                    if (modelAtt.Field.IsDbGenerated) { DbGeneratedFields = new KeyValuePair<PropertyInfo, FieldAttribute>(propertyInfo, modelAtt.Field); }
                }

                #endregion

                #region 初始化字段描述映射

                if (modelAtt.Display == null) { modelAtt.Display = new DisplayAttribute { Name = propertyInfo.Name }; }
                if (string.IsNullOrEmpty(modelAtt.Display.Name)) { modelAtt.Display.Name = propertyInfo.Name; }

                #endregion

                #region 加入智能错误显示消息

                // 是否必填
                if (modelAtt.Required != null && string.IsNullOrEmpty(modelAtt.Required.ErrorMessage)) { modelAtt.Required.ErrorMessage = $"{modelAtt.Display.Name},不能为空!"; }

                // 字符串长度判断
                if (modelAtt.StringLength != null && string.IsNullOrEmpty(modelAtt.StringLength.ErrorMessage))
                {
                    if (modelAtt.StringLength.MinimumLength > 0 && modelAtt.StringLength.MaximumLength > 0) { modelAtt.StringLength.ErrorMessage = $"{modelAtt.Display.Name},长度范围必须为:{modelAtt.StringLength.MinimumLength} - {modelAtt.StringLength.MaximumLength} 个字符之间!"; }
                    else if (modelAtt.StringLength.MaximumLength > 0) { modelAtt.StringLength.ErrorMessage = $"{modelAtt.Display.Name},长度不能大于{modelAtt.StringLength.MaximumLength}个字符!"; }
                    else
                    { modelAtt.StringLength.ErrorMessage = $"{modelAtt.Display.Name},长度不能小于{modelAtt.StringLength.MinimumLength}个字符!"; }
                }

                // 值的长度
                if (modelAtt.Range != null && string.IsNullOrEmpty(modelAtt.Range.ErrorMessage))
                {
                    decimal minnum;
                    decimal.TryParse(modelAtt.Range.Minimum.ToString(), out minnum);
                    decimal maximum;
                    decimal.TryParse(modelAtt.Range.Minimum.ToString(), out maximum);

                    if (minnum > 0 && maximum > 0) { modelAtt.Range.ErrorMessage = $"{modelAtt.Display.Name},的值范围必须为:{minnum} - {maximum} 之间!"; }
                    else if (maximum > 0) { modelAtt.Range.ErrorMessage = $"{modelAtt.Display.Name},的值不能大于{maximum}!"; }
                    else
                    { modelAtt.Range.ErrorMessage = $"{modelAtt.Display.Name},的值不能小于{minnum}!"; }
                }

                #endregion

                MapList.Add(propertyInfo, modelAtt);
            }
        }
예제 #2
0
        /// <summary>
        ///     关系映射
        /// </summary>
        /// <param name="type">实体类Type</param>
        public SetPhysicsMap(Type type)
        {
            Type          = type;
            MapList       = new Dictionary <PropertyInfo, FieldMapState>();
            PrimaryFields = new Dictionary <PropertyInfo, FieldAttribute>();

            // 循环Set的字段
            foreach (var propertyInfo in Type.GetProperties())
            {
                #region 获取字段已标记的特性

                var modelAtt = new FieldMapState();
                var attrs    = propertyInfo.GetCustomAttributes(false);
                foreach (var item in attrs)
                {
                    // 字段
                    if (item is FieldAttribute)
                    {
                        modelAtt.Field = (FieldAttribute)item; continue;
                    }
                    // 字符串长度
                    if (item is StringLengthAttribute)
                    {
                        modelAtt.StringLength = (StringLengthAttribute)item; continue;
                    }
                    // 是否必填
                    if (item is RequiredAttribute)
                    {
                        modelAtt.Required = (RequiredAttribute)item; continue;
                    }
                    // 字段描述
                    if (item is DisplayAttribute)
                    {
                        modelAtt.Display = (DisplayAttribute)item; continue;
                    }
                    // 值的长度
                    if (item is RangeAttribute)
                    {
                        modelAtt.Range = (RangeAttribute)item; continue;
                    }
                    // 正则
                    if (item is RegularExpressionAttribute)
                    {
                        modelAtt.RegularExpression = (RegularExpressionAttribute)item; continue;
                    }
                }
                #endregion

                #region 初始化字段映射

                if (modelAtt.Field == null)
                {
                    modelAtt.Field = new FieldAttribute {
                        Name = propertyInfo.Name
                    };
                }
                if (string.IsNullOrEmpty(modelAtt.Field.Name))
                {
                    modelAtt.Field.Name = propertyInfo.Name;
                }
                if (modelAtt.Field.IsMap)
                {
                    // 主键
                    if (modelAtt.Field.IsPrimaryKey)
                    {
                        PrimaryFields[propertyInfo] = modelAtt.Field;
                    }
                    // 标识
                    if (modelAtt.Field.IsDbGenerated)
                    {
                        DbGeneratedFields = new KeyValuePair <PropertyInfo, FieldAttribute>(propertyInfo, modelAtt.Field);
                    }
                }

                #endregion

                #region 初始化字段描述映射

                if (modelAtt.Display == null)
                {
                    modelAtt.Display = new DisplayAttribute {
                        Name = propertyInfo.Name
                    };
                }
                if (string.IsNullOrEmpty(modelAtt.Display.Name))
                {
                    modelAtt.Display.Name = propertyInfo.Name;
                }

                #endregion

                #region 加入智能错误显示消息

                // 是否必填
                if (modelAtt.Required != null && string.IsNullOrEmpty(modelAtt.Required.ErrorMessage))
                {
                    modelAtt.Required.ErrorMessage = $"{modelAtt.Display.Name},不能为空!";
                }

                // 字符串长度判断
                if (modelAtt.StringLength != null && string.IsNullOrEmpty(modelAtt.StringLength.ErrorMessage))
                {
                    if (modelAtt.StringLength.MinimumLength > 0 && modelAtt.StringLength.MaximumLength > 0)
                    {
                        modelAtt.StringLength.ErrorMessage = $"{modelAtt.Display.Name},长度范围必须为:{modelAtt.StringLength.MinimumLength} - {modelAtt.StringLength.MaximumLength} 个字符之间!";
                    }
                    else if (modelAtt.StringLength.MaximumLength > 0)
                    {
                        modelAtt.StringLength.ErrorMessage = $"{modelAtt.Display.Name},长度不能大于{modelAtt.StringLength.MaximumLength}个字符!";
                    }
                    else
                    {
                        modelAtt.StringLength.ErrorMessage = $"{modelAtt.Display.Name},长度不能小于{modelAtt.StringLength.MinimumLength}个字符!";
                    }
                }

                // 值的长度
                if (modelAtt.Range != null && string.IsNullOrEmpty(modelAtt.Range.ErrorMessage))
                {
                    decimal minnum;
                    decimal.TryParse(modelAtt.Range.Minimum.ToString(), out minnum);
                    decimal maximum;
                    decimal.TryParse(modelAtt.Range.Minimum.ToString(), out maximum);

                    if (minnum > 0 && maximum > 0)
                    {
                        modelAtt.Range.ErrorMessage = $"{modelAtt.Display.Name},的值范围必须为:{minnum} - {maximum} 之间!";
                    }
                    else if (maximum > 0)
                    {
                        modelAtt.Range.ErrorMessage = $"{modelAtt.Display.Name},的值不能大于{maximum}!";
                    }
                    else
                    {
                        modelAtt.Range.ErrorMessage = $"{modelAtt.Display.Name},的值不能小于{minnum}!";
                    }
                }

                #endregion

                MapList.Add(propertyInfo, modelAtt);
            }
        }