Сохраните все узлы xml в БД, не проходя через них - PullRequest
0 голосов
/ 11 января 2011

У меня есть этот xml:

<Path>
  <Record>
     <ID>6534808</ID>
     <Distance>1.05553036073736</Distance>
  </Record>
  <Record>
     <ID>6542471</ID>
     <Distance>1.05553036073736</Distance>
  </Record>
  ... and about more 500 nodes
</Path>

И я использую код ниже, чтобы получить все узлы "Запись":

XmlNodeList paths = xDoc.SelectNodes("//Record");

И после этого я сохраняю каждыйзапись в базу данных.Но проблема в том, что я использую foreach для циклического прохождения по этим узлам, и число этих узлов может быть больше 500, иногда он получает до 1000 узлов «Записи».И это становится слишком длинным ...

Есть ли способ сохранить все эти узлы, не проходя через него?

Спасибо !!

1 Ответ

0 голосов
/ 11 января 2011

Возможно, вы можете выполнить итерацию с вашим текущим значением for-each, но я предлагаю не сохранять данные в записи для каждой итерации.

Сначала создайте операторы вставки, а затем выполните пакетное выполнение всех вставок вОдна поездка.Это более эффективно.

С другой стороны, возможно, вы используете какой-то OR / M.Если это ваша ситуация, и ваш выбор - NHibernate, он поддерживает пакетные команды.

У вас есть еще одно более чистое и эффективное решение: XSLT.

Преобразование вашегоXML в SQL с очень простым XSLT вместо итерации узлов из C #.Синтаксический анализ вашего XML в SQL с этим XSLT является самым быстрым и лучшим решением, и вы можете отправлять данные также за одну поездку.

...