Exemple #1
0
        /// <summary>
        /// 此版本為可參照實際資料庫欄位名稱。
        /// </summary>
        /// <typeparam name="T"> TableMap</typeparam>
        /// <param name="dr"></param>
        /// <param name="md">m_module模型。</param>
        /// <param name="tb">table description module.</param>
        public static void LoadDataToModule <T>(this DataRow dr, Object md, T tb) where T : TableMap <T>
        {
            DataColumnCollection Cs = dr.Table.Columns;

            PropertyInfo[] f1 = md.GetType().GetProperties();
            FieldInfo[]    f2 = tb.GetType().GetFields();

            foreach (var f in f1)
            {
                var q2 = f2.AsEnumerable().Where(x => x.Name == f.Name);
                if (q2.Count() > 0)
                {
                    FieldInfo   qs = q2.FirstOrDefault();
                    FieldModule fm = (FieldModule)qs.GetValue(tb);

                    if (Cs.Contains(fm.N))
                    {
                        if (dr[fm.N] != DBNull.Value)
                        {
                            f.SetValue(md, dr[fm.N], null);
                        }
                    }
                }
                else
                {
                    if (Cs.Contains(f.Name))
                    {
                        if (dr[f.Name] != DBNull.Value)
                        {
                            f.SetValue(md, dr[f.Name], null);
                        }
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// 收集Table的Key Value對應表,主要提供給Grid的代碼類欄位做轉換,可減沙在SQL做Table Join 。
        /// </summary>
        /// <param name="idTabFields">Id欄位</param>
        /// <param name="nameTabFields">Text欄位</param>
        /// <param name="conn">Connection連線</param>
        /// <returns> Dictionary int String </returns>
        public Dictionary <int, String> CollectIdNameFields(
            Expression <Func <TabObjSource, FieldModule> > idTabFields,
            Expression <Func <TabObjSource, FieldModule> > nameTabFields,
            CommConnection conn
            )
        {
            Func <TabObjSource, FieldModule> id   = idTabFields.Compile();
            Func <TabObjSource, FieldModule> name = nameTabFields.Compile();

            FieldModule fieldId   = id.Invoke(this.GetTabObj);
            FieldModule fieldName = name.Invoke(this.GetTabObj);

            String    sql = String.Format("Select {0},{1} From {2}", fieldId.N, fieldName.N, this.N);
            DataTable dt  = conn.ExecuteData(sql);

            Dictionary <int, String> data = new Dictionary <int, String>();

            foreach (DataRow dr in dt.Rows)
            {
                data.Add(dr[fieldId.N].CInt(), dr[fieldName.N].ToString());
            }
            return(data);
        }