2010-08-08 56 views
1

考慮一個客戶有很多訂單。爲什麼在WCF數據服務器中調用addlink和setlink

context.AddLink(customer, "orders", order); 
context.SetLink(order, "customer", customer); 

數據存儲將正確地一個或另一個這些電話(主叫SaveChanges後)進行更新。那麼爲什麼還要在WCF數據服務的文檔中多次顯示調用這兩個函數呢?

回答

0

用於在「一對多」關係中添加ref(與客戶關聯的新訂單)調用AddLink。相反(「一對一」)調用setlink。

+0

好了,好了,但問題是爲什麼兩者兼而有之?正如我在原始問題中所述,DataStore將僅使用兩種方法中的一種進行更新。然而,通過文件通常會顯示兩者的使用。 – Huh 2010-08-09 15:36:49

3

您應該同時撥打電話,因爲您必須手動設置雙向鏈接,除非您只需保存其中一個鏈接。

context.AddLink(customer, "orders", order);告訴上下文有一個從客戶到訂單列表的鏈接(訂單必須是一個集合)。

context.SetLink(order, "customer", customer);說明訂單連接到客戶的上下文。然後在SaveChanges上,鏈接將在數據庫中創建,並且不會有參考問題。

您也可以調用AddRelatedObject來代替,但它也會調用AddObject,所以對象不能在上下文中工作。 MSDN AddRelatedObject

複製了MSDN SetLink

// Add links for the one-to-many relationships. 
context.AddLink(order, "Order_Details", newItem); 
context.AddLink(selectedProduct, "Order_Details", newItem); 

// Set reference links for the many-to-one relationships. 
context.SetLink(newItem, "Order", order); 
context.SetLink(newItem, "Product", selectedProduct);