DataServiceContext.SetLink(Object, String, Object) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Notifica all'oggetto DataServiceContext che esiste un nuovo collegamento tra gli oggetti specificati e che il collegamento è rappresentato dalla proprietà specificata dal sourceProperty parametro .
public:
void SetLink(System::Object ^ source, System::String ^ sourceProperty, System::Object ^ target);
public void SetLink(object source, string sourceProperty, object target);
member this.SetLink : obj * string * obj -> unit
Public Sub SetLink (source As Object, sourceProperty As String, target As Object)
Parametri
- source
- Object
Oggetto di origine per il nuovo collegamento.
- sourceProperty
- String
Proprietà dell'oggetto di origine che identifica l'oggetto di destinazione del nuovo collegamento.
- target
- Object
Oggetto figlio coinvolto nel nuovo collegamento che deve essere inizializzato chiamando questo metodo. L'oggetto di destinazione deve essere un sottotipo del tipo identificato dal sourceProperty parametro . Se target è impostato su Null, la chiamata rappresenta un'operazione di eliminazione del collegamento.
Eccezioni
Quando sourceo sourcePropertytarget sono Null.
Il collegamento specificato esiste già.
oppure
Gli oggetti forniti come source o sono nello Detached stato o Deletedtarget .
oppure
sourceProperty non è una proprietà di navigazione che definisce un riferimento a un singolo oggetto correlato.
Esempio
Nell'esempio seguente viene illustrato come usare i AddLink metodi e SetLink per creare collegamenti che definiscono le relazioni. In questo esempio, anche le proprietà di navigazione nell'oggetto Order_Details vengono impostate in modo esplicito.
int productId = 25;
string customerId = "ALFKI";
Order_Detail newItem = null;
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
try
{
// Get the specific product.
var selectedProduct = (from product in context.Products
where product.ProductID == productId
select product).Single();
// Get the specific customer.
var cust = (from customer in context.Customers.Expand("Orders")
where customer.CustomerID == customerId
select customer).Single();
// Get the first order.
Order order = cust.Orders.FirstOrDefault();
// Create a new order detail for the specific product.
newItem = Order_Detail.CreateOrder_Detail(
order.OrderID, selectedProduct.ProductID, 10, 5, 0);
// Add the new order detail to the context.
context.AddToOrder_Details(newItem);
// Add links for the one-to-many relationships.
context.AddLink(order, "Order_Details", newItem);
context.AddLink(selectedProduct, "Order_Details", newItem);
// Add the new order detail to the collection, and
// set the reference to the product.
order.Order_Details.Add(newItem);
newItem.Product = selectedProduct;
// Send the changes to the data service.
DataServiceResponse response = context.SaveChanges();
// Enumerate the returned responses.
foreach (ChangeOperationResponse change in response)
{
// Get the descriptor for the entity.
EntityDescriptor descriptor = change.Descriptor as EntityDescriptor;
if (descriptor != null)
{
if (descriptor.Entity.GetType() == typeof(Order_Detail))
{
Order_Detail addedItem = descriptor.Entity as Order_Detail;
if (addedItem != null)
{
Console.WriteLine("New {0} item added to order {1}.",
addedItem.Product.ProductName, addedItem.OrderID.ToString());
}
}
}
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred when saving changes.", ex);
}
// Handle any errors that may occur during insert, such as
// a constraint violation.
catch (DataServiceRequestException ex)
{
throw new ApplicationException(
"An error occurred when saving changes.", ex);
}
Dim productId = 25
Dim customerId = "ALFKI"
Dim newItem As Order_Detail = Nothing
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
Try
' Get the specific product.
Dim selectedProduct = (From product In context.Products
Where product.ProductID = productId
Select product).Single()
' Get the specific customer.
Dim cust = (From customer In context.Customers.Expand("Orders")
Where customer.CustomerID = customerId
Select customer).Single()
' Get the first order.
Dim order = cust.Orders.FirstOrDefault()
' Create a new order detail for the specific product.
newItem = Order_Detail.CreateOrder_Detail(
order.OrderID, selectedProduct.ProductID, 10, 5, 0)
' Add the new order detail to the context.
context.AddToOrder_Details(newItem)
' Add links for the one-to-many relationships.
context.AddLink(order, "Order_Details", newItem)
context.AddLink(selectedProduct, "Order_Details", newItem)
' Add the new order detail to the collection, and
' set the reference to the product.
order.Order_Details.Add(newItem)
newItem.Product = selectedProduct
' Send the insert to the data service.
Dim response As DataServiceResponse = context.SaveChanges()
' Enumerate the returned responses.
For Each change As ChangeOperationResponse In response
' Get the descriptor for the entity.
Dim descriptor = TryCast(change.Descriptor, EntityDescriptor)
If Not descriptor Is Nothing Then
Dim addedProduct = TryCast(descriptor.Entity, Product)
If Not addedProduct Is Nothing Then
Console.WriteLine("New product added with ID {0}.",
addedProduct.ProductID)
End If
End If
Next
Catch ex As DataServiceQueryException
Throw New ApplicationException(
"An error occurred when saving changes.", ex)
' Handle any errors that may occur during insert, such as
' a constraint violation.
Catch ex As DataServiceRequestException
Throw New ApplicationException(
"An error occurred when saving changes.", ex)
Commenti
Nello stato viene creato Added un nuovo collegamento. Aggiunge DataServiceContext questo nuovo collegamento al set di collegamenti appena creati da inviare al servizio dati nella chiamata successiva a SaveChanges.
Se l'argomento di destinazione è Null, il collegamento rappresentato da sourceProperty deve essere rimosso o eliminato (il collegamento viene spostato nello Deleted stato).
I collegamenti sono relazioni unidirezionale. Se esiste un back pointer che indica un'associazione bidirezionale, questo metodo deve essere chiamato di nuovo per notificare al DataServiceContext secondo collegamento
Questo metodo supporta solo l'aggiunta di collegamenti a relazioni con molteplicità = 1 (la proprietà di origine è un riferimento all'oggetto). Ad esempio, se una classe Person è correlata a un'altra Person da una Friend proprietà, questa chiamata può essere usata per correlare Person a Person. Questo metodo genererà un'eccezione se l'oggetto sourceProperty rappresentato ha una relazione di cardinalità più di una.