dapper是否将XML数据拆分为字符串列表?

时间:2016-06-16 17:35:55

标签: c# xml orm dapper

我一直在使用dapper的一件事是将来自我们数据库的XML数据转换为字符串,然后按照我需要的方式在给定对象中反序列化它。

今天我遇到了一些事情,其中​​dapper返回了一个包含XML的字符串列表,只是它被拆分了。这是有意的吗?如果我希望返回一个单独的xml字符串,我应该编写这个吗?

以下是我调用proc的方法,如果执行proc,它会返回包含XML数据的单个结果,但是dapper在结果中返回2个字符串。如果我将它们连接起来,那么我会回到我期待的内容,但这似乎不是我应该连接的东西。

var result = conn.Query<string>(procName, parameters, commandType: CommandType.StoredProcedure);

编辑:每个评论请求,这里是正在返回的存储过程和示例数据。只有在XML数据达到一定大小时才会出现这种情况。较小批量的XML数据不会导致这种情况发生。这里提供的示例应该是足以触发它发生的数据。

usp_ListAllGroups

SELECT
   (SELECT ClassificationItemID AS '@ID', GroupCN AS '*' 
      FROM UserGroup WITH (NOEXPAND)
       FOR XML PATH('Group'), TYPE)
   FOR XML PATH('Groups');

结果XML

<Groups>
  <Group ID="4">SomeGroupName</Group>
  <Group ID="9">SomeGroupName</Group>
  <Group ID="2">SomeGroupName</Group>
  <Group ID="553">SomeGroupName</Group>
  <Group ID="447">SomeGroupName</Group>
  <Group ID="435">SomeGroupName</Group>
  <Group ID="395">SomeGroupName</Group>
  <Group ID="489">SomeGroupName</Group>
  <Group ID="468">SomeGroupName</Group>
  <Group ID="408">SomeGroupName</Group>
  <Group ID="455">SomeGroupName</Group>
  <Group ID="443">SomeGroupName</Group>
  <Group ID="524">SomeGroupName</Group>
  <Group ID="414">SomeGroupName</Group>
  <Group ID="430">SomeGroupName</Group>
  <Group ID="423">SomeGroupName</Group>
  <Group ID="511">SomeGroupName</Group>
  <Group ID="482">SomeGroupName</Group>
  <Group ID="154">SomeGroupName</Group>
  <Group ID="236">SomeGroupName</Group>
  <Group ID="244">SomeGroupName</Group>
  <Group ID="367">SomeGroupName</Group>
  <Group ID="547">SomeGroupName</Group>
  <Group ID="134">SomeGroupName</Group>
  <Group ID="309">SomeGroupName</Group>
  <Group ID="26">SomeGroupName</Group>
  <Group ID="128">SomeGroupName</Group>
  <Group ID="335">SomeGroupName</Group>
  <Group ID="322">SomeGroupName</Group>
  <Group ID="164">SomeGroupName</Group>
  <Group ID="190">SomeGroupName</Group>
  <Group ID="30">SomeGroupName</Group>
  <Group ID="121">SomeGroupName</Group>
  <Group ID="276">SomeGroupName</Group>
  <Group ID="260">SomeGroupName</Group>
  <Group ID="83">SomeGroupName</Group>
  <Group ID="71">SomeGroupName</Group>
  <Group ID="591">SomeGroupName</Group>
  <Group ID="358">SomeGroupName</Group>
  <Group ID="179">SomeGroupName</Group>
  <Group ID="113">SomeGroupName</Group>
  <Group ID="148">SomeGroupName</Group>
  <Group ID="299">SomeGroupName</Group>
  <Group ID="209">SomeGroupName</Group>
  <Group ID="229">SomeGroupName</Group>
  <Group ID="8">SomeGroupName</Group>
  <Group ID="54">SomeGroupName</Group>
  <Group ID="40">SomeGroupName</Group>
  <Group ID="3">SomeGroupName</Group>
  <Group ID="1">SomeGroupName</Group>
</Groups>

1 个答案:

答案 0 :(得分:0)

要从存储过程中读取XML,可以使用SqlCommand.ExecuteXmlReader方法,该方法返回2,033个字符的行。这是设计的。我没有看过Dapper代码,但是从我的测试来看,似乎Dapper实现了这个非常酷。