2010-08-08 4 views
1

Рассмотрите, что у клиента много заказов.Зачем использовать addlink и setlink в WCF dataservices

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

Хранилище данных будет корректно обновляться с одной или другой из этих вызовов (после вызова SaveChanges). Итак, зачем беспокоиться о вызове обоих, как показано повторно в документации для служб данных WCF?

ответ

0

для добавления ссылки ref-to-many (новый заказ, связанный с клиентом) вызывает AddLink. По другому пути («один») вызывается setlink.

+0

Ну, хорошо, но вопрос в том, почему так? Как я уже сказал в исходном вопросе, DataStore будет обновляться с использованием только одного из двух методов. Тем не менее, то, что проходит для документации, часто показывает использование обоих подряд. – Huh

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); 
Смежные вопросы