Exemplo n.º 1
0
        public static DbParameter[] BuildDbParameters(string cmdText, object entity, Func <DbParameter> dbParamConstructor, Func <string, string> ParamNameBuilder)
        {
            if (entity == null)
            {
                return(new DbParameter[0]);
            }
            Type               t     = entity.GetType();
            List <string>      list  = Analyst.GetSqlParamNameList(cmdText);
            List <DbParameter> pList = new List <DbParameter>(list.Count);

            foreach (string pName in list)
            {
                DbParameter parm    = dbParamConstructor();
                var         proInfo = t.GetProperty(pName);
                if (proInfo == null)
                {
                    throw new ApplicationException("没有找到SQL参数" + pName + "的赋值;\r\n\r\n【SQL语句】\r\n" + cmdText);
                }
                object tmp = proInfo.GetGetMethod().Invoke(entity, new object[0]);
                tmp = GetIntValueIfEnum(tmp);
                parm.ParameterName = ParamNameBuilder(pName);
                parm.Value         = (tmp == null ? DBNull.Value : tmp);
                pList.Add(parm);
            }
            return(pList.ToArray());
        }
Exemplo n.º 2
0
        public static DbParameter[] BuildDbParameters <T>(string cmdText, T entity, Func <DbParameter> dbParamConstructor, InputMap <T> map, char sqlParamSplitter)
            where T : class
        {
            List <string> list = Analyst.GetSqlParamNameList(cmdText);
            List <ParameterProperty <T> > maps = (map == null) ? null : map.GetMaps();

            if (maps == null)
            {
                maps = new List <ParameterProperty <T> >(0);
            }
            List <DbParameter> pList = new List <DbParameter>(list.Count);

            foreach (string pName in list)
            {
                DbParameter parm = dbParamConstructor();
                parm.ParameterName = pName;
                ParameterProperty <T> pp = maps.Find(p => p.Parameter == pName);

                string[] proArray;
                if (pp != null)
                {
                    proArray = pp.PropertyList.ToArray();
                }
                else
                {
                    proArray = pName.Split(sqlParamSplitter);
                }
                object tmp = GetFieldValueAllowNull(entity, proArray);
                parm.Value = (tmp == null ? DBNull.Value : tmp);
                pList.Add(parm);
            }
            return(pList.ToArray());
        }