Одна из вещей, которые я использовал dapper for, - это преобразовать XML-данные, поступающие из нашей базы данных в строки, а затем десериализовать их внутри данного объекта так, как мне это нужно.Делает ли dapper разделение данных XML в список строк?
Я столкнулся с чем-то сегодня, когда dapper вернул список строк, содержащих XML, только он был разделен. Это предназначено? Должен ли я кодироваться вокруг этого, если я ожидаю вернуть одну строку xml?
Вот как я вызываю proc, и если вы выполняете proc, он возвращает единственный результат, содержащий данные XML, но dapper возвращает 2 строки в результате. Если я их конкатенирую, то я вернусь к тому, что ожидаю, но это не похоже на то, что мне нужно было бы конкатенировать.
var result = conn.Query<string>(procName, parameters, commandType: CommandType.StoredProcedure);
EDIT: Для запроса комментариев здесь приведены данные хранимой процедуры и примера, которые возвращаются. Это происходит только после того, как данные 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>
Я считаю, что это как-то связано с API-интерфейсом Dapper Streaming. Не могли бы вы предоставить больше информации о хранимой процедуре? – supertopi
@supertopi обновил ответ, чтобы включить дополнительную информацию. – akousmata
Какую базу данных вы используете? Даппер не должен этого делать; но сама база данных. –