Ejemplo n.º 1
0
        private static void FillMethodsTable(ValueTable.ValueTable result, IEnumerable <MethodInfo> methods)
        {
            var nameColumn        = result.Columns.Add("Имя", TypeDescription.StringType(), "Имя");
            var countColumn       = result.Columns.Add("КоличествоПараметров", TypeDescription.IntegerType(), "Количество параметров");
            var isFunctionColumn  = result.Columns.Add("ЭтоФункция", TypeDescription.BooleanType(), "Это функция");
            var annotationsColumn = result.Columns.Add("Аннотации", new TypeDescription(), "Аннотации");
            var paramsColumn      = result.Columns.Add("Параметры", new TypeDescription(), "Параметры");

            foreach (var methInfo in methods)
            {
                if (!methInfo.IsExport)
                {
                    continue;
                }

                ValueTableRow new_row = result.Add();
                new_row.Set(nameColumn, ValueFactory.Create(methInfo.Name));
                new_row.Set(countColumn, ValueFactory.Create(methInfo.ArgCount));
                new_row.Set(isFunctionColumn, ValueFactory.Create(methInfo.IsFunction));

                if (methInfo.AnnotationsCount != 0)
                {
                    new_row.Set(annotationsColumn, CreateAnnotationTable(methInfo.Annotations));
                }

                var paramTable             = new ValueTable.ValueTable();
                var paramNameColumn        = paramTable.Columns.Add("Имя", TypeDescription.StringType(), "Имя");
                var paramByValue           = paramTable.Columns.Add("ПоЗначению", TypeDescription.BooleanType(), "По значению");
                var paramHasDefaultValue   = paramTable.Columns.Add("ЕстьЗначениеПоУмолчанию", TypeDescription.BooleanType(), "Есть значение по-умолчанию");
                var paramAnnotationsColumn = paramTable.Columns.Add("Аннотации", new TypeDescription(), "Аннотации");

                new_row.Set(paramsColumn, paramTable);

                if (methInfo.ArgCount != 0)
                {
                    var index = 0;
                    foreach (var param in methInfo.Params)
                    {
                        var name     = string.Format("param{0}", ++index);
                        var paramRow = paramTable.Add();
                        paramRow.Set(paramNameColumn, ValueFactory.Create(name));
                        paramRow.Set(paramByValue, ValueFactory.Create(param.IsByValue));
                        paramRow.Set(paramHasDefaultValue, ValueFactory.Create(param.HasDefaultValue));
                        if (param.AnnotationsCount != 0)
                        {
                            paramRow.Set(paramAnnotationsColumn, CreateAnnotationTable(param.Annotations));
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private static void FillMethodsTable(ValueTable.ValueTable result, IEnumerable <MethodInfo> methods)
        {
            var nameColumn       = result.Columns.Add("Имя", TypeDescription.StringType(), "Имя");
            var countColumn      = result.Columns.Add("КоличествоПараметров", TypeDescription.IntegerType(), "Количество параметров");
            var isFunctionColumn = result.Columns.Add("ЭтоФункция", TypeDescription.BooleanType(), "Это функция");

            foreach (var methInfo in methods)
            {
                ValueTableRow new_row = result.Add();
                new_row.Set(nameColumn, ValueFactory.Create(methInfo.Name));
                new_row.Set(countColumn, ValueFactory.Create(methInfo.ArgCount));
                new_row.Set(isFunctionColumn, ValueFactory.Create(methInfo.IsFunction));
            }
        }
Ejemplo n.º 3
0
        private void FillPropertiesTable(ValueTable.ValueTable result, IEnumerable <VariableInfo> properties)
        {
            var nameColumn     = result.Columns.Add("Имя", TypeDescription.StringType(), "Имя");
            var systemVarNames = new string[] { "этотобъект", "thisobject" };

            foreach (var propInfo in properties)
            {
                if (systemVarNames.Contains(propInfo.Identifier.ToLower()))
                {
                    continue;
                }

                ValueTableRow newRow = result.Add();
                newRow.Set(nameColumn, ValueFactory.Create(propInfo.Identifier));
            }
        }
Ejemplo n.º 4
0
        public ValueTable.ValueTable GetMethodsTable(IRuntimeContextInstance target)
        {
            ValueTable.ValueTable Result = new ValueTable.ValueTable();

            var NameColumn       = Result.Columns.Add("Имя", ValueFactory.Create(""), "Имя");                                    // TODO: Доработать после увеличения предела количества параметров
            var CountColumn      = Result.Columns.Add("КоличествоПараметров", ValueFactory.Create(""), "Количество параметров"); // TODO: Доработать после увеличения предела количества параметров
            var IsFunctionColumn = Result.Columns.Add("ЭтоФункция", ValueFactory.Create(""), "Это функция");                     // TODO: Доработать после увеличения предела количества параметров

            foreach (var methInfo in target.GetMethods())
            {
                ValueTableRow new_row = Result.Add();
                new_row.Set(NameColumn, ValueFactory.Create(methInfo.Name));
                new_row.Set(CountColumn, ValueFactory.Create(methInfo.ArgCount));
                new_row.Set(IsFunctionColumn, ValueFactory.Create(methInfo.IsFunction));
            }

            return(Result);
        }
Ejemplo n.º 5
0
        public ValueTable.ValueTable GetMethodsTable(IRuntimeContextInstance target)
        {
            ValueTable.ValueTable Result = new ValueTable.ValueTable();

            var NameColumn       = Result.Columns.Add("Имя", TypeDescription.StringType(), "Имя");
            var CountColumn      = Result.Columns.Add("КоличествоПараметров", TypeDescription.IntegerType(), "Количество параметров");
            var IsFunctionColumn = Result.Columns.Add("ЭтоФункция", TypeDescription.BooleanType(), "Это функция");

            foreach (var methInfo in target.GetMethods())
            {
                ValueTableRow new_row = Result.Add();
                new_row.Set(NameColumn, ValueFactory.Create(methInfo.Name));
                new_row.Set(CountColumn, ValueFactory.Create(methInfo.ArgCount));
                new_row.Set(IsFunctionColumn, ValueFactory.Create(methInfo.IsFunction));
            }

            return(Result);
        }
Ejemplo n.º 6
0
        private static void FillPropertiesTable(ValueTable.ValueTable result, IEnumerable <VariableInfo> properties)
        {
            var nameColumn        = result.Columns.Add("Имя", TypeDescription.StringType(), "Имя");
            var annotationsColumn = result.Columns.Add("Аннотации", new TypeDescription(), "Аннотации");
            var systemVarNames    = new string[] { "этотобъект", "thisobject" };

            foreach (var propInfo in properties)
            {
                if (systemVarNames.Contains(propInfo.Identifier.ToLower()))
                {
                    continue;
                }

                ValueTableRow new_row = result.Add();
                new_row.Set(nameColumn, ValueFactory.Create(propInfo.Identifier));

                new_row.Set(annotationsColumn, propInfo.AnnotationsCount != 0 ? CreateAnnotationTable(propInfo.Annotations) : EmptyAnnotationsTable());
            }
        }
Ejemplo n.º 7
0
        public ValueTable.ValueTable GetPropertiesTable(IRuntimeContextInstance target)
        {
            ValueTable.ValueTable Result = new ValueTable.ValueTable();

            var NameColumn = Result.Columns.Add("Имя", TypeDescription.StringType(), "Имя");

            var SystemVarNames = new string[] { "этотобъект", "thisobject" };

            foreach (var propInfo in target.GetProperties())
            {
                if (SystemVarNames.Contains(propInfo.Identifier.ToLower()))
                {
                    continue;
                }

                ValueTableRow new_row = Result.Add();
                new_row.Set(NameColumn, ValueFactory.Create(propInfo.Identifier));
            }

            return(Result);
        }
        private TableMapping CreateAccountingRegisterTableMapping(ValueTableRow tableRow)
        {
            var queryTableName = tableRow.GetString("ИмяТаблицы");

            if (string.IsNullOrEmpty(queryTableName))
            {
                return(null);
            }
            var dbTableName = tableRow.GetString("ИмяТаблицыХранения");

            if (string.IsNullOrEmpty(dbTableName))
            {
                return(null);
            }
            var          fieldsTable             = new ValueTable(tableRow["Поля"]);
            var          propertyMappings        = new List <PropertyMapping>();
            const string registratorPropertyName = "Регистратор";
            const string valuePropertyName       = "Значение";

            propertyMappings.Add(new PropertyMapping(registratorPropertyName, null, CreateRegistratorLayout()));
            propertyMappings.Add(new PropertyMapping(valuePropertyName, null, CreateSubkontoLayout()));
            foreach (var fieldRow in fieldsTable)
            {
                var queryName = fieldRow.GetString("ИмяПоля");
                if (queryName == registratorPropertyName || queryName == valuePropertyName)
                {
                    continue;
                }
                var dbName = fieldRow.GetString("ИмяПоляХранения");
                if (string.IsNullOrWhiteSpace(dbName))
                {
                    throw new InvalidOperationException("assertion failure");
                }
                propertyMappings.Add(new PropertyMapping(queryName, new SingleLayout(dbName, null), null));
            }
            return(new TableMapping(queryTableName, dbTableName, TableType.Main, propertyMappings.ToArray()));
        }
        public QueryResult(DbDataReader reader)
        {
            for (int ColIdx = 0; ColIdx < reader.FieldCount; ColIdx++)
            {
                _resultTable.Columns.Add(reader.GetName(ColIdx));
            }

            using (reader)
            {
                foreach (DbDataRecord record in reader)
                {
                    ValueTableRow row = _resultTable.Add();

                    for (int ColIdx = 0; ColIdx < reader.FieldCount; ColIdx++)
                    {
                        if (record.IsDBNull(ColIdx))
                        {
                            row.Set(ColIdx, ValueFactory.Create());
                            continue;
                        }

                        if (record.GetFieldType(ColIdx) == typeof(Int32))
                        {
                            row.Set(ColIdx, ValueFactory.Create((int)record.GetValue(ColIdx)));
                        }
                        if (record.GetFieldType(ColIdx) == typeof(Int64))
                        {
                            row.Set(ColIdx, ValueFactory.Create(record.GetInt64(ColIdx)));
                        }
                        if (record.GetFieldType(ColIdx) == typeof(Boolean))
                        {
                            row.Set(ColIdx, ValueFactory.Create(record.GetBoolean(ColIdx)));
                        }
                        if (record.GetFieldType(ColIdx) == typeof(UInt64))
                        {
                            row.Set(ColIdx, ValueFactory.Create(record.GetValue(ColIdx).ToString()));
                        }

                        if (record.GetFieldType(ColIdx) == typeof(System.Double))
                        {
                            double val = record.GetDouble(ColIdx);
                            row.Set(ColIdx, ValueFactory.Create(val.ToString()));
                        }
                        if (record.GetFieldType(ColIdx) == typeof(Single))
                        {
                            float val = record.GetFloat(ColIdx);
                            row.Set(ColIdx, ValueFactory.Create(val.ToString()));
                        }
                        if (record.GetFieldType(ColIdx) == typeof(Decimal))
                        {
                            row.Set(ColIdx, ValueFactory.Create(record.GetDecimal(ColIdx)));
                        }
                        if (record.GetFieldType(ColIdx) == typeof(System.String))
                        {
                            row.Set(ColIdx, ValueFactory.Create(record.GetString(ColIdx)));
                        }
                        if (record.GetFieldType(ColIdx) == typeof(System.DateTime))
                        {
                            row.Set(ColIdx, ValueFactory.Create(record.GetDateTime(ColIdx)));
                        }
                        if (record.GetFieldType(ColIdx) == typeof(System.Byte[]))
                        {
                            var data    = (byte[])record[ColIdx];
                            var newData = new BinaryDataContext(data);
                            row.Set(ColIdx, ValueFactory.Create(newData));
                        }
                    }
                }
            }
        }
        private TableMapping CreateDefaultTableMapping(ValueTableRow tableRow,
                                                       Dictionary <string, TableMapping> tableMappingByQueryName)
        {
            var queryTableName = tableRow.GetString("ИмяТаблицы");

            if (string.IsNullOrEmpty(queryTableName))
            {
                return(null);
            }
            var dbTableName = tableRow.GetString("ИмяТаблицыХранения");

            if (string.IsNullOrEmpty(dbTableName))
            {
                return(null);
            }
            var purpose = tableRow.GetString("Назначение");
            ConfigurationItemDescriptor descriptor;
            object    comObject;
            TableType tableType;

            if (purpose == "Основная" || purpose == "Константа")
            {
                var configurationName = ConfigurationName.ParseOrNull(queryTableName);
                if (!configurationName.HasValue)
                {
                    return(null);
                }
                tableType  = TableType.Main;
                descriptor = MetadataHelpers.GetDescriptorOrNull(configurationName.Value.Scope);
                if (descriptor == null)
                {
                    comObject = null;
                }
                else
                {
                    var configurationItem = globalContext.FindMetaByName(configurationName.Value);
                    comObject = configurationItem.ComObject;
                }
            }
            else if (purpose == "ТабличнаяЧасть")
            {
                descriptor = MetadataHelpers.tableSectionDescriptor;
                var fullname = TableSectionQueryNameToFullName(queryTableName);
                comObject = ComHelpers.Invoke(globalContext.Metadata, "НайтиПоПолномуИмени", fullname);
                if (comObject == null)
                {
                    return(null);
                }
                tableType = TableType.TableSection;
            }
            else
            {
                return(null);
            }
            var propertyDescriptors = comObject == null
                ? new Dictionary <string, string[]>()
                : MetadataHelpers.GetAttributes(comObject, descriptor)
                                      .ToDictionary(Call.Имя, GetConfigurationTypes);
            var propertyMappings = new ValueTable(tableRow["Поля"])
                                   .Select(x => new
            {
                queryName = x.GetString("ИмяПоля"),
                dbName    = x.GetString("ИмяПоляХранения")
            })
                                   .Where(x => !string.IsNullOrEmpty(x.queryName))
                                   .Where(x => !string.IsNullOrEmpty(x.dbName))
                                   .GroupBy(x => x.queryName,
                                            (x, y) => new
            {
                queryName = x,
                columns   = y.Select(z => z.dbName).ToArray()
            }, StringComparer.OrdinalIgnoreCase)
                                   .Select(x =>
            {
                var propertyName  = x.queryName.ExcludeSuffix("Кт").ExcludeSuffix("Дт");
                var propertyTypes = propertyName == "Счет"
                        ? new[] { "ПланСчетов.Хозрасчетный" }
                        : propertyDescriptors.GetOrDefault(propertyName);
                if (propertyTypes == null || propertyTypes.Length == 1)
                {
                    if (x.columns.Length != 1)
                    {
                        return(null);
                    }
                    var nestedTableName = propertyTypes == null ? null : propertyTypes[0];
                    var singleLayout    = new SingleLayout(x.columns[0], nestedTableName);
                    return(new PropertyMapping(x.queryName, singleLayout, null));
                }
                var unionLayout = x.queryName == "Регистратор"
                        ? new UnionLayout(
                    null,
                    GetColumnBySuffixOrNull("_RecorderTRef", x.columns),
                    GetColumnBySuffixOrNull("_RecorderRRef", x.columns),
                    propertyTypes)
                        : new UnionLayout(
                    GetColumnBySuffixOrNull("_type", x.columns),
                    GetColumnBySuffixOrNull("_rtref", x.columns),
                    GetColumnBySuffixOrNull("_rrref", x.columns),
                    propertyTypes);
                return(new PropertyMapping(x.queryName, null, unionLayout));
            })
                                   .NotNull()
                                   .ToList();

            if (tableType == TableType.TableSection)
            {
                if (!HasProperty(propertyMappings, PropertyNames.id))
                {
                    var refLayout = new SingleLayout(GetTableSectionIdColumnNameByTableName(dbTableName), null);
                    propertyMappings.Add(new PropertyMapping(PropertyNames.id, refLayout, null));
                }
                if (!HasProperty(propertyMappings, PropertyNames.area))
                {
                    var          mainQueryName = TableMapping.GetMainQueryNameByTableSectionQueryName(queryTableName);
                    TableMapping mainTableMapping;
                    if (!tableMappingByQueryName.TryGetValue(mainQueryName, out mainTableMapping))
                    {
                        return(null);
                    }
                    PropertyMapping mainAreaProperty;
                    if (!mainTableMapping.TryGetProperty(PropertyNames.area, out mainAreaProperty))
                    {
                        return(null);
                    }
                    propertyMappings.Add(mainAreaProperty);
                }
            }
            return(new TableMapping(queryTableName, dbTableName, tableType, propertyMappings.ToArray()));
        }
        private TableMapping CreateAccountingRegisterTableMapping(ValueTableRow tableRow)
        {
            var queryTableName = tableRow.GetString("ИмяТаблицы");

            if (string.IsNullOrEmpty(queryTableName))
            {
                return(null);
            }
            var dbTableName = tableRow.GetString("ИмяТаблицыХранения");

            if (string.IsNullOrEmpty(dbTableName))
            {
                return(null);
            }
            var fieldsTable      = new ValueTable(tableRow["Поля"]);
            var propertyMappings = new List <PropertyMapping>();
            var subkontoCount    = 0;

            foreach (var fieldRow in fieldsTable)
            {
                var queryName = fieldRow.GetString("ИмяПоля");
                var dbName    = fieldRow.GetString("ИмяПоляХранения");
                if (string.IsNullOrWhiteSpace(dbName))
                {
                    throw new InvalidOperationException("assertion failure");
                }
                if (dbName.EndsWith("_RTRef") || dbName.EndsWith("_RRRef"))
                {
                    continue;
                }
                UnionLayout unionLauout = null;
                if (string.IsNullOrWhiteSpace(queryName))
                {
                    if (dbName == "_AccountRRef")
                    {
                        queryName = "Счет";
                    }
                    else if (dbName == "_Period")
                    {
                        queryName = "Период";
                    }
                    else if (dbName == "_Splitter")
                    {
                        queryName = "Разделитель";
                    }
                    else if (dbName == "_Value1_TYPE")
                    {
                        queryName   = "Субконто1";
                        unionLauout = CreateSubkontoLayout(1);
                        subkontoCount++;
                    }
                    else if (dbName == "_Value2_TYPE")
                    {
                        queryName   = "Субконто2";
                        unionLauout = CreateSubkontoLayout(2);
                        subkontoCount++;
                    }
                    else if (dbName == "_Value3_TYPE")
                    {
                        queryName   = "Субконто3";
                        unionLauout = CreateSubkontoLayout(3);
                        subkontoCount++;
                    }
                    else
                    {
                        const string messageFormat = "unexpected empty query name for field, db name [{0}]";
                        throw new InvalidOperationException(string.Format(messageFormat, dbName));
                    }
                }
                SingleLayout singleLayout = null;
                if (unionLauout == null)
                {
                    string nestedTableName;
                    if (queryName == "Счет")
                    {
                        nestedTableName = "ПланСчетов.Хозрасчетный";
                    }
                    else if (queryName == "Организация")
                    {
                        nestedTableName = "Справочник.Организации";
                    }
                    else if (queryName == "Валюта")
                    {
                        nestedTableName = "Справочник.Валюты";
                    }
                    else if (queryName == "Подразделение")
                    {
                        nestedTableName = "Справочник.ПодразделенияОрганизаций";
                    }
                    else
                    {
                        nestedTableName = null;
                    }
                    singleLayout = new SingleLayout(dbName, nestedTableName);
                }
                if (dbName.ContainsIgnoringCase("Turnover"))
                {
                    queryName += "Оборот";
                    if (dbName.Contains("Dt"))
                    {
                        queryName += "Дт";
                    }
                    else if (dbName.Contains("Ct"))
                    {
                        queryName += "Кт";
                    }
                }
                propertyMappings.Add(new PropertyMapping(queryName, singleLayout, unionLauout));
            }
            if (queryTableName == AccountingRegisterTables.subkontoName)
            {
                queryTableName += subkontoCount;
            }
            return(new TableMapping(queryTableName, dbTableName, TableType.Main, propertyMappings.ToArray()));
        }
Ejemplo n.º 12
0
        public ValueTable RunQuery()
        {
            ValueTable  tbl       = new ValueTable();
            OdbcCommand dbCommand = (OdbcCommand)dbСonnection.CreateCommand();

            // Добавляем параметры в запрос
            string pattern = @"@[A-z0-9]*";
            Regex  regex   = new Regex(pattern);
            Match  match   = regex.Match(QueryText);

            while (match.Success)
            {
                string currParam = match.Value;
                var    currValue = parameters[currParam];
                dbCommand.Parameters.AddWithValue(currParam, currValue);
                match = match.NextMatch();
            }
            string prepareQuery = regex.Replace(QueryText, "?");

            dbCommand.CommandText = prepareQuery;
            // Выполняем запрос
            IDataReader dbReader = dbCommand.ExecuteReader();

            // Создаем ТаблицуЗначений в которую будем выводить результат запроса

            for (int i = 0; i < dbReader.FieldCount; i++)
            {
                string ColumnName = dbReader.GetName(i);
                tbl.Columns.Add(ColumnName);
            }


            while (dbReader.Read())
            {
                for (int i = 0; i < dbReader.FieldCount; i++)
                {
                    string        ColumnName = dbReader.GetName(i);
                    ValueTableRow row        = tbl.Add();
                    var           value      = dbReader[ColumnName];
                    System.Type   valueType  = value.GetType();
                    if (valueType == typeof(int))
                    {
                        row.Set(i, ValueFactory.Create((int)value));
                    }
                    else if (valueType == typeof(Int16))
                    {
                        row.Set(i, ValueFactory.Create((Int16)value));
                    }
                    else if (valueType == typeof(Int32))
                    {
                        row.Set(i, ValueFactory.Create((Int32)value));
                    }
                    else if (valueType == typeof(string))
                    {
                        row.Set(i, ValueFactory.Create((string)value));
                    }
                    else if (valueType == typeof(DateTime))
                    {
                        row.Set(i, ValueFactory.Create((DateTime)value));
                    }
                }
            }

            dbReader.Close();
            dbReader = null;
            dbCommand.Dispose();
            dbCommand = null;
            return(tbl);
        }
Ejemplo n.º 13
0
        public ValueTable Unload()
        {
            ValueTable resultTable = new ValueTable();

            for (int ColIdx = 0; ColIdx < _reader.FieldCount; ColIdx++)
            {
                resultTable.Columns.Add(_reader.GetName(ColIdx));
            }

            foreach (DbDataRecord record in _reader)
            {
                ValueTableRow row = resultTable.Add();

                for (int ColIdx = 0; ColIdx < _reader.FieldCount; ColIdx++)
                {
                    if (record.IsDBNull(ColIdx))
                    {
                        row.Set(ColIdx, ValueFactory.Create());
                        continue;
                    }

                    //Console.WriteLine("queryresult-col-type:" + record.GetFieldType(ColIdx).ToString() + "::" + record.GetDataTypeName(ColIdx));

                    if (record.GetFieldType(ColIdx) == typeof(Int32))
                    {
                        row.Set(ColIdx, ValueFactory.Create((int)record.GetValue(ColIdx)));
                    }
                    if (record.GetFieldType(ColIdx) == typeof(Int64))
                    {
                        row.Set(ColIdx, ValueFactory.Create(record.GetInt64(ColIdx)));
                    }
                    if (record.GetFieldType(ColIdx) == typeof(Boolean))
                    {
                        row.Set(ColIdx, ValueFactory.Create(record.GetBoolean(ColIdx)));
                    }
                    if (record.GetFieldType(ColIdx) == typeof(UInt64))
                    {
                        row.Set(ColIdx, ValueFactory.Create(record.GetValue(ColIdx).ToString()));
                    }

                    if (record.GetFieldType(ColIdx).ToString() == "System.Double")
                    {
                        double val = record.GetDouble(ColIdx);
                        row.Set(ColIdx, ValueFactory.Create(val.ToString()));
                    }
                    if (record.GetFieldType(ColIdx) == typeof(Single))
                    {
                        float val = record.GetFloat(ColIdx);
                        row.Set(ColIdx, ValueFactory.Create(val.ToString()));
                    }
                    if (record.GetFieldType(ColIdx) == typeof(Decimal))
                    {
                        row.Set(ColIdx, ValueFactory.Create(record.GetDecimal(ColIdx)));
                    }
                    if (record.GetFieldType(ColIdx).ToString() == "System.String")
                    {
                        row.Set(ColIdx, ValueFactory.Create(record.GetString(ColIdx)));
                    }
                    if (record.GetFieldType(ColIdx).ToString() == "System.DateTime")
                    {
                        row.Set(ColIdx, ValueFactory.Create(record.GetDateTime(ColIdx)));
                    }
                    if (record.GetFieldType(ColIdx).ToString() == "System.Byte[]")
                    {
                        var data    = (byte[])record[ColIdx];
                        var newData = new BinaryDataContext(data);
                        row.Set(ColIdx, ValueFactory.Create(newData));
                    }
                }
            }
            _reader.Close();
            return(resultTable);
        }