2011-08-03 27 views
1

有没有人知道如何从具有多个父表行的数据集中编写XML?向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.

任何想法上为什么发生这种情况以及如何解决?

在此先感谢。

+1

您是否使用数据集作为创建数据源的基础?这是否建立了关系?你需要他们这个应用程序。 –

+0

是的,它被用作数据源。它建立了一对关系。 –

回答

0

删除表中的数据并插入新数据后,问题得到解决。由于数据库没有约束,并且约束在数据集的FK关系上,因此它失败了。

正确的解决方案是在数据库中设置FK约束,而不是单独在数据集中进行。

谢谢你们,你的回答引导了我。

1

为什么将EnforceConstraints设置为false?你有没有检查设置正确的关系?

+0

这些关系是正确的。在问这个问题之前,我已经仔细检查了它。由于该异常只发生在序列化时,因此您可以尝试在序列化时关闭这些常量。在序列化之前,我将使用DataSet.EnforceConstraints = false,并在它之后将其设置为true。 –

相关问题