Esempio n. 1
0
 /// <summary>
 /// 对新增和修改的检测
 /// 1、是否可为空
 /// 2、字符长度
 /// 3、数字范围
 /// </summary>
 /// <param name="datamoudle"></param>
 /// <param name="f"></param>
 /// <param name="v"></param>
 /// <param name="errs"></param>
 private void CheckAddOrUpdateFieldValue(
     IDataModel datamoudle,
     IDataFieldModel f,
     object v,
     IList <DataModalFieldException> errs)
 {
     if (!DataValueParase.PassNullValue(f, v))
     {
         errs.Add(ErrorCreateHelper.CreateFieldIsNullError(f.Name, f.Title));
         return;
     }
     if (f.FieldDbType == System.Data.DbType.String)
     {
         //字符是否超出最大长度
         int mx = f.GetFieldSize();
         //等于int.maxvalue则不限制字符大小
         if (mx != int.MaxValue)
         {
             mx = mx * 2; //字符类型在数据库存储均使用nvarchar类型(Unicode:每个字符占两字节)
             string vv = (string)v;
             if (!string.IsNullOrEmpty(vv))
             {
                 int sl = System.Text.Encoding.Unicode.GetByteCount(vv);
                 if (sl > mx)
                 {
                     errs.Add(ErrorCreateHelper.CreateFieldValueOutOfRangeError(f.Name, f.Title, mx));
                     return;
                 }
             }
         }
     }
     else
     {
         //数字是否超出范围
         Type fieldType = f.GetClrType();
         //数字是否超出范围
         NumberType nt = DataValueParase.IsNumberType(fieldType);
         if ((nt != NumberType.Unkown) || (fieldType == typeof(DateTime) || fieldType == typeof(TimeSpan)))
         {
             string exp = f.GetMinMaxExpress();
             if (!string.IsNullOrWhiteSpace(exp) && !DataValueParase.IsDbNullValue(v))
             {
                 if (!MinMaxValueHelper.ValueIsInRangle(exp, v))
                 {
                     errs.Add(ErrorCreateHelper.CreateFieldValueOutOfRangeError(f.Name, f.Title, exp));
                     return;
                 }
             }
         }
     }
 }
Esempio n. 2
0
 /// <summary>
 /// 将字段值从数据库格式转换为本机格式
 /// </summary>
 /// <param name="field">字段信息</param>
 /// <param name="value">字段值</param>
 /// <returns></returns>
 public static object ConvertFieldValueFromDbValue(IDataFieldModel field, object value)
 {
     if (field != null)
     {
         var c = field.GetDbValueConvertor();
         if (c != null)
         {
             return(c.ParseValueFromDbValue(value, field.GetClrType()));
         }
         else
         {
             if (value != null && value is IDbValueConvertor)
             {
                 return(((IDbValueConvertor)value).ParseValueFromDbValue(value, value.GetType()));
             }
         }
     }
     return(value);
 }
Esempio n. 3
0
 /// <summary>
 /// 字段值转换为数据库格式
 /// </summary>
 /// <param name="field">字段信息</param>
 /// <param name="value">字段值</param>
 /// <returns></returns>
 public static object ConvertFieldValueToDbValue(IDataFieldModel field, object value)
 {
     if (field != null)
     {
         var c = field.GetDbValueConvertor();
         if (c != null)
         {
             return(c.FormateValueToDbValue(value));
         }
         else
         {
             Type clr = field.GetClrType();
             if (clr.FindInterface(typeof(IDbValueConvertor)))
             {
                 IDbValueConvertor xx = clr.CreateObject() as IDbValueConvertor;
                 return(xx.FormateValueToDbValue(value));
             }
         }
     }
     return(value);
 }
Esempio n. 4
0
        /// <summary>
        /// 添加参数到paramets中去
        /// </summary>
        /// <param name="paramets">参数集合,返回的参数将添加到该集合中,如果不为空的话</param>
        /// <param name="ft">参数后缀,可为为null</param>
        /// <param name="field">字段信息</param>
        /// <param name="value">行值</param>
        /// <returns></returns>
        private static DataParamet AppendParamet(List <IDataParamet> paramets, string parhz, IDataFieldModel field, object rowvalue)
        {
            object value = field.GetModelFieldValue(rowvalue);

            value = ConvertFieldValueToDbValue(field, value);
            DataParamet p = new DataParamet()
            {
                Name      = GenerateParametName(field.Name, parhz),
                Value     = value,
                ValueType = field.GetClrType()
            };
            int s = field.GetFieldSize();

            if (s > 0)
            {
                p.ValueSize = s;
            }
            if (paramets != null)
            {
                paramets.Add(p);
            }
            return(p);
        }
Esempio n. 5
0
 private static bool IsNullableFieldForBooleanOrNum(IDataFieldModel f)
 {
     if (f == null)
     {
         return(false);
     }
     return(f.CanbeNull() && (f.FieldDbType == System.Data.DbType.Boolean || DataValueParase.IsNumberType(f.GetClrType()) != NumberType.Unkown));
 }