我在数据库中有几个表,父表说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);
请指导我在这里缺少什么?
谢谢!
答案 0 :(得分:2)
你见过this article吗?作者说
默认情况下,
DataSet
设计师会在DataRelations
之间设置DataSet
父子表格为“仅限关系”。这意味着SelectCommand
不会强制客户端的外键约束,只是你的 数据库...
尝试将父子关系的类型更改为外键约束。然后,检查ChildTableAdapter
的{{1}}属性。它以您期望的方式过滤数据。