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

时间:2010-01-02 20:44:23

标签: c# asp.net ado.net

我有一个数据集 40张桌子。现在我想建立一种关系 这些表和节目之间 网格中的重要数据。我该怎么做?

5 个答案:

答案 0 :(得分:5)

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

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

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

在MSDN here中阅读所有相关信息。

答案 1 :(得分:1)

DataTables中有大量DataSet

我要考虑的第一件事是通过使用JOIN数据库表的查询填充DataTables来减少Relations的数量(并消除对DataTables的需要)。例如,可以将两个数据库表的数据合并为一个DataTable,而不是将一个DataTable用于产品类别而另一个用于产品详细信息。同样,对于Customer,Customer Address和Customer Phone,使用一个在所有三个数据库表上执行JOIN的查询来检索一个DataTable中的所有数据。

DataTables中最小化DataSet的数量后,如果Relations具有匹配的列,则可以在DataTables之间添加DataTable(即使列具有不同的名称) )。例如,可能存在订单DataTable,其CustomerID列与Customers Relation中的ID列相匹配。

以下是为此情况向DataSet添加DataSet的代码。假设我们有一个DataTables dst,其中包含两个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); 客户和订单。

{{1}}

答案 2 :(得分:1)

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

答案 3 :(得分:0)

您尝试过类似的事情吗?

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

答案 4 :(得分:0)

<div>
<input id="r" type="range" min="0" max="255" oninput="changeRGB(0,event)">R<br>
<input id="g" type="range" min="0" max="255" oninput="changeRGB(1,event)">G<br>
<input id="b" type="range" min="0" max="255" oninput="changeRGB(2,event)">B<br>
<pre class="infoRGB"></pre>
</div> 

<div>
<div class="box hsl"></div>

</div>

<div>
<input id="h" type="range" min="0" max="360" oninput="changeHS(0,event)">H<br>
<input id="s" type="range" min="0" max="255" oninput="changeHS(1,event)">S<br>
<input id="v" type="range" min="0" max="255" oninput="changeHS(2,event)">V<br>
<pre class="infoHS"></pre><br>
</div>