/// <summary>
        /// 根据XML 文件名称 和SQL 名称以及指定的过滤参数获取对应的。
        /// </summary>
        /// <typeparam name="T">获取得到返回值的数据类型</typeparam>
        /// <param name="parsMapping">参数Mapping 的信息</param>
        /// <param name="xmlFileName">SQL 语句所在的Xml 文件名称</param>
        /// <param name="sqlName">SQL 语句定义的名称</param>
        /// <param name="parInfos">QueryParameterInfo 数组格式的参数</param>
        /// <param name="parValues">SQL 参数值</param>
        /// <returns>指定类型的集合类</returns>
        public List <T> GetObjectsByXml <T>(QueryParameterMappings parsMapping, string xmlFileName, string sqlName,
                                            QueryParameterInfo[] parInfos, params object[] parValues)
        {
            try {
                QueryParameterMappings queryMappings = parsMapping;
                if (queryMappings == null)
                {
                    queryMappings = MB.Orm.Mapping.Xml.SqlConfigHelper.Instance.GetSqlQueryParamMappings(xmlFileName, sqlName);
                }

                string sqlFilter = MB.Orm.DbSql.SqlShareHelper.Instance.QueryParametersToSqlString(queryMappings, parInfos);

                List <object> pars = new List <object>();
                if (parValues != null && parValues.Length > 0)
                {
                    foreach (object p in parValues)
                    {
                        pars.Add(p);
                    }
                }
                pars.Add(sqlFilter);

                return(GetObjectsByXml <T>(xmlFileName, sqlName, pars.ToArray()));
            }
            catch (Exception ex) {
                throw new MB.Util.APPException("执行GetObjectsByXml<T> 出错", MB.Util.APPMessageType.SysDatabaseInfo, ex);
            }
        }
        /// <summary>
        ///  通过Xml 配置的语句获取数据集。
        /// </summary>
        /// <param name="transaction"></param>
        /// <param name="xmlFileName">SQL 语句所在的Xml 文件名称</param>
        /// <param name="sqlName">SQL 语句定义的名称</param>
        /// <param name="parInfos">QueryParameterInfo 数组格式的参数</param>
        /// <returns>指定类型的集合类</returns>
        public DataSet GetDataSetByXmlParams(DbTransaction transaction, string xmlFileName, string sqlName, QueryParameterInfo[] parInfos)
        {
            QueryParameterMappings queryMappings = MB.Orm.Mapping.Xml.SqlConfigHelper.Instance.GetSqlQueryParamMappings(xmlFileName, sqlName);
            string sqlFilter = MB.Orm.DbSql.SqlShareHelper.Instance.QueryParametersToSqlString(queryMappings, parInfos);

            return(GetDataSetByXml(transaction, xmlFileName, sqlName, sqlFilter));
        }
Example #3
0
        /// <summary>
        /// 根据指定的 XML 和 SQL 名称获取参数的Mapping 配置信息。
        /// </summary>
        /// <param name="xmlFileName"></param>
        /// <param name="sqlName"></param>
        /// <returns></returns>
        public MB.Orm.Mapping.QueryParameterMappings GetSqlQueryParamMappings(string xmlFileName, string sqlName)
        {
            System.Xml.XmlNode sqlNode = getSqlNode(xmlFileName, sqlName);
            if (sqlNode == null || sqlNode.ChildNodes.Count == 0)
            {
                TraceEx.Write("在XML 文件:" + xmlFileName + " 中获取相应SQL 语句:" + sqlName + "出错,请检查资源文件或者对应SQL 语句是否存在!");
                return(null);
            }
            MB.Orm.Mapping.QueryParameterMappings mappings = null;
            foreach (System.Xml.XmlNode paramMappingNode in sqlNode.ChildNodes)
            {
                if (paramMappingNode.NodeType != System.Xml.XmlNodeType.Element)
                {
                    continue;
                }
                if (string.Compare(paramMappingNode.Name, XML_PARAM_MAPPINGS, true) != 0)
                {
                    continue;
                }

                mappings = new QueryParameterMappings();
                if (paramMappingNode.Attributes["DefaultTableAlias"] != null)
                {
                    mappings.DefaultTableAlias = paramMappingNode.Attributes["DefaultTableAlias"].Value;
                }

                foreach (System.Xml.XmlNode node in paramMappingNode.ChildNodes)
                {
                    if (node.NodeType != System.Xml.XmlNodeType.Element)
                    {
                        continue;
                    }
                    if (string.Compare(node.Name, "Mapping", true) != 0)
                    {
                        continue;
                    }
                    if (node.Attributes["Name"] == null || node.Attributes["DbFieldName"] == null)
                    {
                        throw new MB.Util.APPException(string.Format("XML配置文件{0},配置QueryParamMappings 是可能没有配置 Name 或者 DbFieldName!", xmlFileName));
                    }

                    mappings.Add(new QueryParameterMappingInfo(node.Attributes["Name"].Value, node.Attributes["DbFieldName"].Value));
                }
                break;
            }
            return(mappings);
        }