Esempio n. 1
0
        ///////////////////////////////////

        /// <summary>
        /// 表字段转换为字段实体类
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public List <FieldObject> DataTableToFieldObject(DataTable dt)
        {
            List <FieldObject> list = new List <FieldObject>();

            foreach (DataRow dr in dt.Rows)
            {
                /*
                 * "USE {1};
                 * SELECT
                 * [Sort]=a.colorder,
                 * [Name]=a.name,
                 * [IsPKey]=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
                 *  SELECT name FROM sysindexes WHERE indid in(
                 *      SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
                 * ))) then 1 else 0 end,
                 * [IsIdentity]=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then 1 else 0 end,
                 * [Type]=b.name,
                 * [Bytes]=a.length,
                 * [Length]=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
                 * [Digits]=ISNULL(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
                 * [Nullable]= a.isnullable ,
                 * [DefValue]=ISNULL(e.text,'')
                 * FROM syscolumns a LEFT JOIN systypes b ON a.xusertype=b.xusertype INNER JOIN sysobjects d ON a.id=d.id
                 * AND d.xtype='U' AND d.name !='dtproperties' LEFT JOIN syscomments e ON a.cdefault=e.id
                 * WHERE d.name='{0}' ORDER BY a.id,a.colorder"
                 */
                int sort = 0;
                int.TryParse(dr["Sort"].ToString(), out sort);
                string name   = dr["Name"].ToString();
                int    isPKey = 0;
                int.TryParse(dr["IsPKey"].ToString(), out isPKey);
                int isIdentity = 0;
                int.TryParse(dr["IsIdentity"].ToString(), out isIdentity);
                string type  = dr["Type"].ToString();
                int    bytes = 0;
                int.TryParse(dr["Bytes"].ToString(), out bytes);
                int length = 0;
                int.TryParse(dr["Length"].ToString(), out length);
                int digits = 0;
                int.TryParse(dr["Digits"].ToString(), out digits);
                bool nullable = false;
                bool.TryParse(dr["Nullable"].ToString(), out nullable);
                string defValue = dr["DefValue"].ToString();

                FieldObject fo = new FieldObject();
                fo.Sort         = sort;
                fo.Name         = name; //表字段名称:原样
                fo.PrimaryKey   = (isPKey == 1);
                fo.Identity     = (isIdentity == 1);
                fo.Type         = DbTypeToObType(type);
                fo.Bytes        = bytes;
                fo.Length       = length;
                fo.Digits       = digits;
                fo.Nullable     = nullable;
                fo.DefaultValue = defValue;
                //
                string split = "_";
                fo.Alias = (name.Length > 2)
                    ? StringUtil.FristLower(name, split)
                    : name.ToLower();  //(别名:去掉"_",,首字母小写;数据库字段命名最好采用驼峰法)
                fo.PrivateProp = (name.Length > 2)
                    ? StringUtil.FristLower(name, split)
                    : name.ToLower();                             //(私有字段:去掉"_",首字母小写;数据库字段命名最好采用驼峰法)
                fo.PublicProp = StringUtil.FirstUpper(name, '_'); //(公有属性:去掉'_',首字母大写)
                fo.Descr      = "";                               //TODO,增加获取数据字段说明
                list.Add(fo);
            }
            return(list);
        }
Esempio n. 2
0
        ///////////////////////////////////
        /// <summary>
        /// 表字段转换为字段实体类
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public List<FieldObject> DataTableToFieldObject(DataTable dt)
        {
            List<FieldObject> list = new List<FieldObject>();
            foreach (DataRow dr in dt.Rows)
            {
                /*
                 * "USE {1};
                 * SELECT
                 * [Sort]=a.colorder,
                 * [Name]=a.name,
                 * [IsPKey]=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
                 *  SELECT name FROM sysindexes WHERE indid in(
                 *      SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
                 * ))) then 1 else 0 end,
                 * [IsIdentity]=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then 1 else 0 end,
                 * [Type]=b.name,
                 * [Bytes]=a.length,
                 * [Length]=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
                 * [Digits]=ISNULL(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
                 * [Nullable]= a.isnullable ,
                 * [DefValue]=ISNULL(e.text,'')
                 * FROM syscolumns a LEFT JOIN systypes b ON a.xusertype=b.xusertype INNER JOIN sysobjects d ON a.id=d.id
                 * AND d.xtype='U' AND d.name !='dtproperties' LEFT JOIN syscomments e ON a.cdefault=e.id
                 * WHERE d.name='{0}' ORDER BY a.id,a.colorder"
                 */
                int sort = 0;
                int.TryParse(dr["Sort"].ToString(), out sort);
                string name = dr["Name"].ToString();
                int isPKey = 0;
                int.TryParse(dr["IsPKey"].ToString(), out isPKey);
                int isIdentity = 0;
                int.TryParse(dr["IsIdentity"].ToString(), out isIdentity);
                string type = dr["Type"].ToString();
                int bytes = 0;
                int.TryParse(dr["Bytes"].ToString(), out bytes);
                int length = 0;
                int.TryParse(dr["Length"].ToString(), out length);
                int digits = 0;
                int.TryParse(dr["Digits"].ToString(), out digits);
                bool nullable = false;
                bool.TryParse(dr["Nullable"].ToString(), out nullable);
                string defValue = dr["DefValue"].ToString();

                FieldObject fo = new FieldObject();
                fo.Sort = sort;
                fo.Name = name;     //表字段名称:原样
                fo.PrimaryKey = (isPKey == 1);
                fo.Identity = (isIdentity == 1);
                fo.Type = DbTypeToObType(type);
                fo.Bytes = bytes;
                fo.Length = length;
                fo.Digits = digits;
                fo.Nullable = nullable;
                fo.DefaultValue = defValue;
                //
                string split = "_";
                fo.Alias = (name.Length>2)
                    ? StringUtil.FristLower(name, split)
                    : name.ToLower();  //(别名:去掉"_",,首字母小写;数据库字段命名最好采用驼峰法)
                fo.PrivateProp = (name.Length>2)
                    ? StringUtil.FristLower(name, split)
                    : name.ToLower();    //(私有字段:去掉"_",首字母小写;数据库字段命名最好采用驼峰法)
                fo.PublicProp = StringUtil.FirstUpper(name, '_'); //(公有属性:去掉'_',首字母大写)
                fo.Descr = "";  //TODO,增加获取数据字段说明
                list.Add(fo);
            }
            return list;
        }