1

我的要求是加载基于 xsd 和一组与 xsd 中不同节点关联的查询生成 xml 文件。它还需要对数据进行分页,以便将 xml 拆分为多个文件,但保持顶部节点的完整性(我的意思是根之后的下一级)。我的方法是使用数据加载数据集。如果不需要分页,一切都可以,但是当包含分页时,我会得到顶部节点以下所有级别的孤立节点。我认为拥有所有关系的数据集会阻止孤立行。有没有办法确保结果没有孤儿?

这是我的代码的摘录:

for (int page = 1; page <= pages; page++)
{
    foreach (DataTable dataTable in dataSetSchema.Tables)
    {
        if (dataTable.TableName == releasedOutput.PartitionNode)
        {
            var pagedSql = @"WITH pagingOutputSchema As ( SELECT ROW_NUMBER() OVER(ORDER BY idnkey) as RowNumber, idnkey FROM {0} )
SELECT *
FROM {0} INNER JOIN
pagingOutputSchema ON {0}.idnkey = pagingOutputSchema.idnkey
WHERE pagingOutputSchema.RowNumber BETWEEN ({1} - 1) * {2} + 1  AND {1} * {2} 
ORDER BY 1".FormatWith(tmpFullTableName, page, rowsPerPage);
            _schemaXMLHandler.FillTableInDataSet(releasedOutput.Prefix, pagedSql, dataSetSchema, partitionNode);
        }
        else
        {
            var node = nodes.GetNodeByName(dataTable.TableName);
            _schemaXMLHandler.FillTableInDataSet(releasedOutput.Prefix, node.Sql, dataSetSchema, node);
        }
    }
    //this saves the loaded schema into a file
    var dstFileName = fileNamePre + "_part_" + (fileIndex) + ".xml";
    using (var fileStream = File.Create(dstFileName))
        dataSetSchema.WriteXml(fileStream);

    fileIndex++;
}
4

0 回答 0