如何在相同数据集中的表之间建立关系?

问题描述:

我有一个数据集,其中有 40个表。现在我想在这些表格之间建立关系 ,并在网格中显示 重要数据。我该怎么做呢?如何在相同数据集中的表之间建立关系?

+0

阿希什,你问了一个非常具体的问题交代(“如何与一个数据集表”)。如果删除第二个更广泛和更模糊的问题(“如何在网格中显示相关数据”),则会在此处获得更好的结果。 – 2010-01-02 20:54:39

你尝试类似:

ds.Relations.Add("Products_Category", 
    ds.Tables("Categories").Columns("CategoryID"), 
    ds.Tables("Products").Columns("CategoryID")); 

如果您正在创建一个类型化的DataSet,这是最简单的创建在Visual Studio中的数据集设计的关系。只需右键单击设计器中的表格,选择Add-> Relation,然后指定关系。

如果你需要在代码中指定的关系,你可以做这样的:

dataSet.Relations.Add(dataSet.Tables["Customers"].Columns["customerId"], 
    dataSet.Tables["Orders"].Columns["customerId"]); 

阅读所有关于它在MSDN here

+0

但我从webservice获取所有表并将其绑定到数据集中。现在我想在这些表格之间建立关系,并在网格中显示一些重要的数据。请帮助我。 – Ashish 2010-01-02 21:03:05

+0

我的回答完全描述了如何做到这一点。 – 2010-01-02 21:08:31

这是一个DataTablesDataSet有大量。

我会考虑的第一件事情是通过用加入数据库表的查询填充DataTables来减少DataTables的数量(并且不需要Relations)。例如,可以将一个DataTable用于产品类别,另一个用于产品详细信息,也可以将两个数据库表的数据合并为一个DataTable。同样,对于客户,客户地址和客户电话,通过使用在所有三个数据库表上执行JOIN的一个查询来检索一个DataTable中的所有数据。

一旦你在DataSet最小的DataTables数量,你可以DataTables之间添加Relations如果他们匹配的列(即使列有不同的名称)。例如,可能会有订单DataTable,其CustomerID列与Customers DataTable中的ID列匹配。

以下是在此情况下将Relation添加到DataSet的代码。假设我们有一个DataSet dst包含两个DataTables客户和订单。

DataColumn customerColumn, orderColumn; 
customerColumn = dst.Tables["Customers"].Columns["ID"]; 
orderColumn = dst.Tables["Orders"].Columns["CustomerID"]; 
DataRelation dr = new DataRelation("CustomerOrders", customerColumn, orderColumn); 
dst.Relations.Add(dr); 

ds.Relations.Add("Products_Category", 
    ds.Tables("Categories").Columns("CategoryID"), 
    ds.Tables("Products").Columns("CategoryID"));