考慮一個客戶有很多訂單。爲什麼在WCF數據服務器中調用addlink和setlink
context.AddLink(customer, "orders", order);
context.SetLink(order, "customer", customer);
數據存儲將正確地一個或另一個這些電話(主叫SaveChanges
後)進行更新。那麼爲什麼還要在WCF數據服務的文檔中多次顯示調用這兩個函數呢?
考慮一個客戶有很多訂單。爲什麼在WCF數據服務器中調用addlink和setlink
context.AddLink(customer, "orders", order);
context.SetLink(order, "customer", customer);
數據存儲將正確地一個或另一個這些電話(主叫SaveChanges
後)進行更新。那麼爲什麼還要在WCF數據服務的文檔中多次顯示調用這兩個函數呢?
用於在「一對多」關係中添加ref(與客戶關聯的新訂單)調用AddLink。相反(「一對一」)調用setlink。
您應該同時撥打電話,因爲您必須手動設置雙向鏈接,除非您只需保存其中一個鏈接。
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);
好了,好了,但問題是爲什麼兩者兼而有之?正如我在原始問題中所述,DataStore將僅使用兩種方法中的一種進行更新。然而,通過文件通常會顯示兩者的使用。 – Huh 2010-08-09 15:36:49