/// <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)); }
/// <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); }