我有一个存储过程,它返回FOR XML RAW
类似于以下格式的 XML 原始数据:
<row
codelistid="1" codelistname="LOCATION"
codeid="1557" codename="Hors Ile de France" languageid="1" />
当我在 Management Studio 中运行存储过程时,返回了 1765 行的数据,但是当我从 C# 代码调用该过程时,它似乎是 882 的一半左右。似乎如果两行具有相同的 codeid,那么只有一个是回来
我正在使用 xmlreader 逐行返回 XML,然后将每一行作为 XElement 附加到我的结果 XDocument 中。
这是我检索数据的方式:
using (SqlConnection conn = new SqlConnection(con))
{
XDocument results = new XDocument(
new XElement("results"));
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "MyStoredProc";
conn.Open();
var count = 0;
using (XmlReader reader = cmd.ExecuteXmlReader())
{
while (reader.Read())
{
results.Root.Add(XElement.Parse(reader.ReadOuterXml()));
count += 1;
}
}
return results;
}
}
如果我将 SPROC 更改为输出数据而不是 XML 并通过 SQLDataReader 读取它似乎工作正常。
任何人对为什么会发生这种情况有任何想法,因为我希望数据库返回 XML?
提前致谢。