Esempio n. 1
0
 /// 创建sql参数
 /// <summary>
 /// 创建sql参数
 /// </summary>
 /// <param name="attr"></param>
 /// <returns></returns>
 private static SqlParameter CreateSqlParameter(DBFieldAttribute attr)
 {
     if (attr.DBLength == 0)
     {
         return(new SqlParameter("@" + attr.DBField, attr.DBType)
         {
             Value = attr.Value
         });
     }
     else
     {
         return(new SqlParameter("@" + attr.DBField, attr.DBType, attr.DBLength)
         {
             Value = attr.Value
         });
     }
 }
Esempio n. 2
0
        /// 获取所有的字段属性
        /// <summary>
        /// 获取所有的字段属性
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="info"></param>
        /// <returns></returns>
        public static Dictionary <string, DBFieldAttribute> GetDBFieldAttributes <T>(T info)
        {
            Dictionary <string, DBFieldAttribute> list = new Dictionary <string, DBFieldAttribute>();

            foreach (PropertyInfo proInfo in info.GetType().GetProperties())
            {
                object[] attrs = proInfo.GetCustomAttributes(typeof(DBFieldAttribute), true);
                if (attrs.Length == 1)
                {
                    DBFieldAttribute attr = (DBFieldAttribute)attrs[0];
                    if (attr != null)
                    {
                        attr.Value   = proInfo.GetValue(info, null);
                        attr.ProInfo = proInfo;
                        list.Add(attr.DBField, attr);
                    }
                }
            }
            return(list);
        }
Esempio n. 3
0
        /// 设置属性的值
        /// <summary>
        /// 设置属性的值
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="info"></param>
        /// <param name="dr"></param>
        public static void SetValues <T>(T info, DataRow dr)
        {
            foreach (PropertyInfo proInfo in info.GetType().GetProperties())
            {
                object[] attrs = proInfo.GetCustomAttributes(typeof(DBFieldAttribute), true);
                if (attrs.Length == 1)
                {
                    DBFieldAttribute attr = (DBFieldAttribute)attrs[0];
                    if (attr != null)
                    {
                        switch (attr.DBType)
                        {
                        case SqlDbType.SmallInt:
                        case SqlDbType.TinyInt:
                        case SqlDbType.Bit:
                        case SqlDbType.Int:
                        {
                            int?value = (!dr.Table.Columns.Contains(attr.DBField) || dr[attr.DBField] == null || dr[attr.DBField] == DBNull.Value) ? null : (int?)Convert.ToInt32(dr[attr.DBField]);
                            proInfo.SetValue(info, value, null);
                        }
                        break;

                        case SqlDbType.Float:
                        case SqlDbType.Real:
                        {
                            double?value = (!dr.Table.Columns.Contains(attr.DBField) || dr[attr.DBField] == null || dr[attr.DBField] == DBNull.Value) ? null : (double?)Convert.ToDouble(dr[attr.DBField]);
                            proInfo.SetValue(info, value, null);
                        }
                        break;

                        case SqlDbType.Money:
                        case SqlDbType.SmallMoney:
                        case SqlDbType.Decimal:
                        {
                            decimal?value = (!dr.Table.Columns.Contains(attr.DBField) || dr[attr.DBField] == null || dr[attr.DBField] == DBNull.Value) ? null : (decimal?)Convert.ToDecimal(dr[attr.DBField]);
                            proInfo.SetValue(info, value, null);
                        }
                        break;

                        case SqlDbType.BigInt:
                        case SqlDbType.Timestamp:
                        {
                            long?value = (!dr.Table.Columns.Contains(attr.DBField) || dr[attr.DBField] == null || dr[attr.DBField] == DBNull.Value) ? null : (long?)Convert.ToInt64(dr[attr.DBField]);
                            proInfo.SetValue(info, value, null);
                        }
                        break;

                        case SqlDbType.Xml:
                        case SqlDbType.Char:
                        case SqlDbType.NChar:
                        case SqlDbType.NVarChar:
                        case SqlDbType.VarChar:
                        case SqlDbType.NText:
                        case SqlDbType.Text:
                        {
                            string value = (!dr.Table.Columns.Contains(attr.DBField) || dr[attr.DBField] == null || dr[attr.DBField] == DBNull.Value) ? null : Convert.ToString(dr[attr.DBField]);
                            proInfo.SetValue(info, value, null);
                        }
                        break;

                        case SqlDbType.UniqueIdentifier:
                        {
                            Guid?value = (!dr.Table.Columns.Contains(attr.DBField) || dr[attr.DBField] == null || dr[attr.DBField] == DBNull.Value) ? null : (Guid?)new Guid(dr[attr.DBField].ToString());
                            proInfo.SetValue(info, value, null);
                        }
                        break;

                        case SqlDbType.DateTime:
                        case SqlDbType.SmallDateTime:
                        case SqlDbType.Date:
                        case SqlDbType.Time:
                        case SqlDbType.DateTime2:
                        {
                            DateTime?value = (!dr.Table.Columns.Contains(attr.DBField) || dr[attr.DBField] == null || dr[attr.DBField] == DBNull.Value) ? null : (DateTime?)Convert.ToDateTime(dr[attr.DBField]);
                            proInfo.SetValue(info, value, null);
                        }
                        break;

                        case SqlDbType.Binary:
                        case SqlDbType.Image:
                        case SqlDbType.VarBinary:
                        case SqlDbType.Variant:
                        case SqlDbType.Udt:
                        case SqlDbType.Structured:
                        case SqlDbType.DateTimeOffset:
                        {
                            object value = (!dr.Table.Columns.Contains(attr.DBField) || dr[attr.DBField] == null || dr[attr.DBField] == DBNull.Value) ? null : dr[attr.DBField];
                            proInfo.SetValue(info, value, null);
                        }
                        break;
                        }
                    }
                }
            }
        }