Обновление SQL Server -with-autogenerated-identity-key из сгенерированного XML набора данных-родительских-дочерних таблиц C # - PullRequest
0 голосов
/ 29 августа 2018

У меня есть набор данных с несколькими таблицами и связями (импортирован из XMLreader). Мне нужно вставить данные в базу данных SQL со связанной информацией (таблицы сервера SQL идентичны таблицам набора данных).

Моя проблема связана со столбцами идентификаторов импортируемого xml - всегда будут порядковыми номерами (как XML)

<SysProg Version-1.0><Jobs> <Job xyz /> <Job xyz /> <Jobs> </SysProg>
  • SQLBulkCopy не будет работать, так как другие предыдущие xml-файлы имели те же идентификаторы. Вставка в БД SQL будет плохой.

Как мне пройти по таблицам в наборе данных, упорядочить их от родителя к потомку, чтобы я мог обновить родителя данными (вернуть идентификаторы, затем обновить потомок) и т. Д.

Я знаю, чтобы проверить на ChildRelations и т. Д., Упорядочить и затем убедиться, что все это сделано правильно, я не уверен, как это сделать - или если у кого-то есть способ сделать это просто. Я пытаюсь не жестко кодировать таблицы - поэтому, если XML-код изменяется, мне не нужно перекодировать его в новую модель данных XML.

EDIT

Данные в наборах данных поступают из файла XML. Я получаю 8 таблиц, родительские и затем дочерние таблицы. Каждое чтение XML-файла - идентификаторы строк с in будут иметь последовательность от 0 до n. Мне нужно вставить данные в базу данных и поддерживать связь данных. Я всегда буду выполнять Вставку - я никогда не буду выполнять ОБНОВЛЕНИЕ. поскольку эти задания считываются в базу данных для очередей и т. д.

Мой сервер БД автоматически генерирует первичные ключи.

Итак, мой вопрос - как я могу пройтись по этим таблицам и вставить данные эффективным и надлежащим образом, а проще - лучше?

Я прочитал эту ссылку how-to-update-dataset-parent-child-tables-with-autogenerated-identity-key и это выглядит многообещающе ... но я не совсем следую за этим. Я предполагаю, что я изменяю свои числа в столбцах Id на отрицательные и помещаю эту вещь в dataadapter и обновляю базу данных?

...