示例#1
0
        private ICollection <StorageProcedureModel> ParseDataSet(DataSet ds)
        {
            var res = new List <StorageProcedureModel>();

            var rowsCount = ds.Tables[0].Rows.Count;

            //
            // table return: sp.name, param.name, type.name, type.maxLength
            //
            var storageProcList = new List <Tuple <string, string, string> >();

            for (var i = 0; i < rowsCount; i++)
            {
                var row = ds.Tables[0].Rows[i];

                string name = Convert.ToString(row[0]);

                string param = row[1] is null ? null : Convert.ToString(row[1]);

                string type = row[2] is null ? null : Convert.ToString(row[2]);

                storageProcList.Add(new Tuple <string, string, string>(name, param, type));
            }

            var groupedByStorageProcedureName = storageProcList.GroupBy(x => x.Item1).ToList();

            res = groupedByStorageProcedureName.Select(sp =>
            {
                var item = new StorageProcedureModel()
                {
                    Name       = sp.Key,
                    Parameters = new Dictionary <string, string>()
                };

                var prms = sp.Where(x => !string.IsNullOrEmpty(x.Item2));

                foreach (var prm in prms)
                {
                    item.Parameters.Add(prm.Item2, prm.Item3);
                }

                return(item);
            }).ToList();

            return(res);
        }
示例#2
0
        public StorageProcedureModel GetStorageProcedure(string storageProcedureName)
        {
            var res = new StorageProcedureModel();

            var sqlQuery = GetQueryStorageProcedure(storageProcedureName);

            var storageProceduresDataSet = CallQueryText(sqlQuery);

            if (storageProceduresDataSet.Tables.Count == 0)
            {
                throw new Exception("Don't have any storage procedures in DB");
            }

            var spList = ParseDataSet(storageProceduresDataSet);

            res = spList.First();

            return(res);
        }