public DataTable ReadResult(NormalizeInfo dbStructure, long queryId, bool readServiceColumns = false)
        {
            const long sessionId = 1L;
            string     modSql    = null;
            string     strSQL    = null;
            IEnumerable <SQLiteParameter> parameters = null;
            DataTable dataTableResult = null;

            if (dbStructure != null)
            {
                Common.Table table = Common.Table.GetTable(
                    this.Connection,
                    dbStructure.TableName
                    );

                if (table != null)
                {
                    CommonRowFiller.GetQueryModifier(
                        out modSql,
                        out parameters,
                        queryId,
                        sessionId
                        );

                    strSQL = dbStructure.GetSelectQuery(modSql, readServiceColumns)
                             + " ORDER BY " + CommonRowFiller.RowOrderFieldName;

                    ReadTableCommand command = new ReadTableCommand(
                        this.Connection,
                        strSQL,
                        parameters.ToArray()
                        );

                    command.Execute(100);

                    if (!readServiceColumns)
                    {
                        CommonRowFiller.RemoveServiceColumns(command.Result);
                    }

                    dataTableResult = command.Result;
                }
            }

            return(dataTableResult);
        }
        protected Int64?ProcessRowForWrite(
            DataRow row,
            NormalizeInfo dbStructure,
            out ITableRow tableRow,
            bool writeToDb
            )
        {
            Int64?id = null;

            Common.Table table = this._tables[dbStructure];

            tableRow = new TableRow(table.TableDefinition);

            foreach (DataColumn column in row.Table.Columns)
            {
                string columnName = column.ColumnName.DeleteSpecChars();

                if (dbStructure.Fields.Any(field => field.Name == columnName))
                {
                    tableRow.Values.Add(columnName, row[column.ColumnName]);
                }
            }

            foreach (NormalizeInfo childDirectory in dbStructure.ChildDirectories)
            {
                ITableRow tmpTableRow = null;
                long?     childId     = this.ProcessRowForWrite(row, childDirectory, out tmpTableRow, true);

                tableRow.Values.Add(childDirectory.GetAsFk(), childId);
            }

            if (writeToDb)
            {
                id = table.InsertOrUpdateRow(tableRow);
            }
            else
            {
                id = -1L;
            }

            return(id);
        }