通过拉动行,遵循关系来提取DataSet的子集

时间:2009-02-10 02:09:03

标签: serialization ado.net

是否有一种相对简单的方法来提取DataSet的关系一致子集?我想要的子集是:我感兴趣的行,这些行所需的所有子行和父行,没有别的。

我有十几个表,每个表与其他表有两到四个关系。

我想我可以在一两天内编写代码来遍历数据表和关系,但我更愿意重用现有代码并在我的产品上花一两天。

背景

我从公司销售的组件数据库中提取了一个强类型DataSet

我正在考虑另一种强类型DataSet来存储建议的解决方案。物料清单(BOM)上的每个项目将有一行。每行将描述组件的配置。

我不想将解决方案表放在组件DataSet中。

当我通过WriteXml序列化解决方案DataSet时,我想继续足够有关组件的信息。如果我从组件表中存储主键,那应该不会太难。

如果我还保留了来自该DataSet的相应行,那么持久化解决方案可以在主要组件DataSet的数据到期后继续存在。我不想坚持整个组件DataSet,因此我的问题是提取一个有用的子集。

1 个答案:

答案 0 :(得分:1)

我能想到的最简单的方法是在每一行上调用DataRow.SetModified()并遍历您需要获取的任何子行,然后在DataSet上调用DataSet.GetChanges()方法,这将只返回给您您标记的行。

在调用GetChanges再次使用它之后,您还需要在原始DataSet中调用RejectChanges()。