dapper가 XML 데이터를 문자열 목록으로 분할합니까?

c# dapper orm xml

문제

내가 사용하고있는 것들 중 하나는 데이터베이스에서 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>

인기 답변

저장 프로 시저에서 XML을 읽으려면 2,033 자의 행을 반환하는 SqlCommand.ExecuteXmlReader 메서드를 사용합니다. 이는 의도적으로 설계된 동작입니다. Dapper 코드는 보지 않았지만 테스트 결과 Dapper가 구현 한 코드는 매우 멋지다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow