过滤关系数据的数据集

时间:2012-01-03 22:50:48

标签: c# .net dataset

我在数据库中有几个表,父表说P与某些子表有1:1的关系,而与其他子表有1:M的关系。

为此,我在设计时通过'添加 - >添加了DataSet。新商品 - >数据集 - > DataSet1.xsd“
所以,我有所有必需的表以及他们的1:1或1:M关系。

我在主表适配器上应用了一些过滤器,以便只在父数据表及其相关子记录中选择的记录填充在数据集中。最后,我想将这些数据从DataSet写入Xml文件。

但是,我遇到了一个问题 - 我得到的最终数据集是来自子表的所有记录。相反,它应该只有那些父表具有相关记录的子记录。

我正在使用以下代码 -

ParentDataSet parentDataSet = new ParentDataSet();
 ParentTableAdapter parentTableAdapter = new ParentTableAdapter();
 parentTableAdapter.Fill(parentDataSet.ParentTable, column1Value); // All fine until here as I have applied filter in tableAdapter SQL

 ChildTableAdapter childTableAdapter = new ChildTableAdapter();
 //returns all rows in the child table -- shouldn't it return only those child records for which parent dataset table is having records??
 childTableAdapter.Fill(parentDataSet.ChildTable);  

 parentDataSet.WriteXml(xmlFilePath);

请指导我在这里缺少什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

你见过this article吗?作者说

  

默认情况下,DataSet设计师会在DataRelations之间设置DataSet   父子表格为“仅限关系”。这意味着SelectCommand   不会强制客户端的外键约束,只是你的   数据库...

尝试将父子关系的类型更改为外键约束。然后,检查ChildTableAdapter的{​​{1}}属性。它以您期望的方式过滤数据。