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