ORM 的關聯處理功能
ORM Framewok可以處理各類型的關聯,不論是一對多、多對一、多對多、單鍵關聯、多鍵關聯、…,ORM
Framework Builder 都能夠產生出對應的 ORM
Framework。
一對多 (one to many)
以 Microsoft
SQL Server 上的 Northwind 資料庫為例,Customers 資料表中的每個客戶都可以在 Orders 資料表中對應出
0 ~ n 筆的訂單,如下圖:

在 ORM
Framework 中就會內建一對多的關聯處理,例如:
Dim
peter As New Customer(“CustomerID=’ALFKI’”)
For Each o As Order In peter.Orders
MessageBox.Show(o.OrderDate.ToString())
Next
您可以輕鬆使用 Customer 物件的 Orders 屬性來取得該客戶對應的所有訂單資料,當然,也可以再透過 Order 物件的 Order_Details 屬性取得訂單明細資料,例如要取得上述客戶的第3筆訂單中的第 2 筆訂單明細的單價:
peter.Orders(2).Order_Details(1).UnitPrice
多對一 (many to one)
多對一關聯與上述的一對多關聯正好是相反的方式,以 Microsoft
SQL Server 上的 Northwind 資料庫為例,Products 資料表中的每個產品都可以在 Order
Details 資料表中對應出
0 ~ n 筆的訂單明細, Products 對 Order
Details 就是一對多的關聯,反過來,Order
Details 對 Products 就是多對一的關聯,如下圖:

如同之前所說明,您可以透過 ORM
Framework 中內建的一對多關聯功能進行明細查詢,例如想要知道某一產品在那些訂單明細中有:
Dim
p As New Product(“ProductID=53”)
For Each od As Order_Detail In p.OrderDetails
MessageBox.Show(od.Quantity.ToString())
Next
反過來,如果想知道某一訂單明細是訂購那一個產品,就可以使用 ORM
Framework 中內建的多對一關聯功能進行明細查詢,例如要取得某一訂單明細 od 所訂購的產品名稱:
od.Product.ProductName
多對多 (many to
many)
綜合以上一對多、多對一的關聯方式,我們可以處理對多對的關聯狀況,例如某一個客戶可以訂購多個產品,某一個產品也可以被多個客戶訂購,以 Microsoft
SQL Server 上的 Northwind 資料庫為例:

可以直接透過 ORM
Framework 中內建的多對多關聯功能進行資料瀏覽:
Dim
peter As New Customer(“CustomerID=’ALFKI’”)
For Each o As Order In peter.Orders
For Each od As Order_Detail In o.Order_Details
MessageBox.Show(od.Product.ProductName)
Next
Next
|