Esempio n. 1
0
        public static MultipleResultMap LoadMultipleResultMap(XmlElement xmlNode, IList <ResultMap> resultMaps)
        {
            MultipleResultMap multipleResultMap = new MultipleResultMap
            {
                Id      = xmlNode.Attributes["Id"].Value,
                Results = new List <Result> {
                }
            };
            int resultIndex = 0;

            foreach (XmlNode childNode in xmlNode.ChildNodes)
            {
                var result = new Result
                {
                    Index    = resultIndex,
                    Property = childNode.Attributes["Property"]?.Value,
                    MapId    = childNode.Attributes["MapId"]?.Value,
                };
                var indexStr = childNode.Attributes["Index"]?.Value;
                if (int.TryParse(indexStr, out int index))
                {
                    result.Index = index;
                }
                if (!String.IsNullOrEmpty(result.MapId))
                {
                    var resultMap = resultMaps.FirstOrDefault(m => m.Id == result.MapId);
                    result.Map = resultMap ?? throw new SmartSqlException($"Can not find ResultMap.Id:{result.MapId}");
                }
                multipleResultMap.Results.Add(result);
                resultIndex++;
            }
            return(multipleResultMap);
        }
Esempio n. 2
0
        public static MultipleResultMap LoadMultipleResultMap(XmlElement xmlNode, SmartSqlMap sqlMap)
        {
            MultipleResultMap multipleResultMap = new MultipleResultMap
            {
                Id      = xmlNode.Attributes["Id"].Value,
                Results = new List <Result> {
                }
            };

            if (multipleResultMap.Id.IndexOf('.') < 0)
            {
                multipleResultMap.Id = $"{sqlMap.Scope}.{multipleResultMap.Id}";
            }
            int resultIndex = 0;

            foreach (XmlNode childNode in xmlNode.ChildNodes)
            {
                var result = new Result
                {
                    Index    = resultIndex,
                    Property = childNode.Attributes["Property"]?.Value,
                    MapId    = childNode.Attributes["MapId"]?.Value,
                };
                if (result.MapId?.IndexOf('.') < 0)
                {
                    result.MapId = $"{sqlMap.Scope}.{result.MapId}";
                }
                var indexStr = childNode.Attributes["Index"]?.Value;
                if (int.TryParse(indexStr, out int index))
                {
                    result.Index = index;
                }
                if (childNode.Name == "Root")
                {
                    multipleResultMap.Root = result;
                }
                else
                {
                    multipleResultMap.Results.Add(result);
                }

                resultIndex++;
            }
            return(multipleResultMap);
        }