Ошибка записи в файл XML набора данных с несколькими связанными таблицами и без применения ограничений - PullRequest
1 голос
/ 03 августа 2011

Кто-нибудь знает, как написать XML из набора данных, который имеет несколько таблиц с несколькими родительскими строками?

Сценарий: у меня есть пять дочерних отношений к таблице, это делает 5 внешних ключей в родительской таблице;и эта родительская таблица имеет своего родителя.Все таблицы содержат данные, и я хочу экспортировать их в файл XML.

Для этого я использую следующий код:

DataSet dataSet = dataSource as DataSet;

SaveFileDialog dialog = new SaveFileDialog();
dialog.FileName = dataSet.DataSetName;
dialog.Filter = "XML files (*.xml) | *.xml";

if (dialog.ShowDialog() == DialogResult.OK)
{
    dataSet.EnforceConstraints = false;

    dataSet.WriteXml(dialog.FileName, XmlWriteMode.WriteSchema);
}

Каждый раз, когда я отлаживаю и нажимаю dataSet.WriteXml строка Я получаю это сообщение об ошибке:

Cannot proceed with serializing DataTable 'Table_Name'. It contains a DataRow which has multiple parent rows on the same Foreign Key.

Любые идеи о том, почему это происходит и как ее решить?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Почему вы устанавливаете EnforceConstraints в false? а вы проверяли правильность установки отношений?

0 голосов
/ 05 августа 2011

Проблема была решена после удаления данных в таблице и вставки новых данных.Поскольку у БД нет ограничения, а ограничение связано с отношением FK набора данных, существует вероятность его сбоя.

Надлежащее решение - установить ограничение FK в базе данных вместо того, чтобы делать это водин набор данных.

Спасибо, ребята, ваши ответы помогут мне.

...