我已经尝试了解决方案的 SQL Server 部分。您可以将查询放在存储过程中,然后使用 C# 代码调用存储过程。这将允许您直接在程序中获取 XML。这是 SQL Server 2008 R2。
CREATE TABLE parent
(
parent_id INT IDENTITY PRIMARY KEY,
parent_name NVARCHAR(100)
);
CREATE TABLE child
(
child_id INT IDENTITY PRIMARY KEY,
parent_id INT REFERENCES parent(parent_id),
child_name NVARCHAR(100)
);
INSERT INTO parent
(parent_name)
VALUES ('JOHN');
INSERT INTO parent
(parent_name)
VALUES ('TOM');
INSERT INTO parent
(parent_name)
VALUES ('STACY');
INSERT INTO child
(parent_id,
child_name)
VALUES (1,
'Emily')
INSERT INTO child
(parent_id,
child_name)
VALUES (1,
'Ryan')
INSERT INTO child
(parent_id,
child_name)
VALUES (2,
'Krusna')
INSERT INTO child
(parent_id,
child_name)
VALUES (2,
'Uma')
INSERT INTO child
(parent_id,
child_name)
VALUES (2,
'Kali')
INSERT INTO child
(parent_id,
child_name)
VALUES (3,
'Jimbo')
INSERT INTO child
(parent_id,
child_name)
VALUES (3,
'Howard')
SELECT parent.parent_id AS "@parentId",
parent.parent_name AS "@parentname",
(SELECT child_id AS "@childId",
child_name AS "@childName"
FROM child
WHERE child.parent_id = parent.parent_id
FOR xml path ('Child'), type)
FROM parent
INNER JOIN child
ON ( parent.parent_id = child.parent_id )
FOR xml path ('Parent'), root ('Container'), type