ADO.NET 快速入門(九):使用關係型數據

DataSet 能夠包含非關聯表,也能夠包含關聯表。你能夠把 DataSet 想象成一個文檔數據。事實上,除了 DataSet 是基於層級模型的,其它和 XML 數據文檔是同樣的。因爲數據一般存儲在關係數據庫,DataSet 能夠同時處理層級型關係和主鍵/外鍵型關係。 Relationships 也有不一樣的執行方式。默認狀況下,Deletes 和 Updates 是級聯型的:假如刪除一個 Customer 行,關聯的 Orders 行也會被刪除;假如更改一個 Customer  行的主鍵,關聯的 Orders 表中的外鍵也會更改。
 
DataSet 包含一個 Relations 集合。你能夠利用關聯表的 Column 或者 Columns(複合列鍵) 添加 Relation 到這個 Relations 集合。下面的代碼在 Customers 和 Orders 之間建立一個 Relation,並命名爲 CustOrders。
 
示例一:
 
            // 使用父子列建立 Relation
            DataRelation myDataRelation = myDataSet.Relations.Add("CustOrders", myDataSet.Tables["Customers"].Columns["CustomerID"],
                myDataSet.Tables["Orders"].Columns["CustomerID"]);

 

在 DataSet 內部的 Customers 表上的 CustomerID 主鍵和 Orders 表上的 CustomerID 外鍵之間添加了 Relation 以後,你就能夠遍歷關聯數據了。
 
示例二:
 
            SqlConnection myConnection = new SqlConnection("server=(local);Integrated Security=SSPI;database=northwind;");
            SqlDataAdapter myDataAdapter = new SqlDataAdapter();
            
            DataSet myDataSet = new DataSet();
            
            myDataAdapter.SelectCommand = new SqlCommand("SELECT * FROM Customers", myConnection);
            myDataAdapter.Fill(myDataSet, "Customers");

            myDataAdapter.SelectCommand = new SqlCommand("SELECT * FROM Orders", myConnection);
            myDataAdapter.Fill(myDataSet, "Orders");

            // 使用父子列建立 Relation
            DataRelation myDataRelation = myDataSet.Relations.Add("CustOrders", myDataSet.Tables["Customers"].Columns["CustomerID"],
                myDataSet.Tables["Orders"].Columns["CustomerID"]);

            // 迭代 Customers 父行
            foreach (DataRow myDataRow1 in myDataSet.Tables["Customers"].Rows)
            {
                Console.WriteLine("客戶: " + myDataRow1["ContactName"].ToString());

                // 迭代 Customers 行的 Orders 子行
                foreach (DataRow myDataRow2 in myDataRow1.GetChildRows(myDataRelation))
                {
                    Console.WriteLine("訂單號:" + myDataRow2["OrderID"].ToString());
                }
            }

 

原文連接:
相關文章
相關標籤/搜索