Metodo DataServiceContext.AddLink
Aggiunge il collegamento specificato al set di oggetti rilevato da DataServiceContext.
Spazio dei nomi System.Data.Services.Client
Assembly: Microsoft.Data.Services.Client (in Microsoft.Data.Services.Client.dll)
Sintassi
'Dichiarazione
Public Sub AddLink ( _
source As Object, _
sourceProperty As String, _
target As Object _
)
'Utilizzo
Dim instance As DataServiceContext
Dim source As Object
Dim sourceProperty As String
Dim target As Object
instance.AddLink(source, sourceProperty, _
target)
public void AddLink(
Object source,
string sourceProperty,
Object target
)
public:
void AddLink(
Object^ source,
String^ sourceProperty,
Object^ target
)
member AddLink :
source:Object *
sourceProperty:string *
target:Object -> unit
public function AddLink(
source : Object,
sourceProperty : String,
target : Object
)
Parametri
- source
Tipo: System.Object
Oggetto di origine per il nuovo collegamento.
- sourceProperty
Tipo: System.String
Nome della proprietà di navigazione nell'oggetto di origine che restituisce l'oggetto correlato.
- target
Tipo: System.Object
Oggetto correlato all'oggetto di origine dal nuovo collegamento.
Eccezioni
Eccezione | Condizione |
---|---|
ArgumentNullException | Se source, sourceProperty o target è Null. |
InvalidOperationException | Se esiste già un collegamento. -oppure- Se gli oggetti source o target sono in uno stato Detached o Deleted. -oppure- Se sourceProperty non è una raccolta. |
Osservazioni
Notifica a DataServiceContext l'esistenza di un nuovo collegamento tra gli oggetti di origine e destinazione correlati e la rappresentazione del collegamento da parte della proprietà di origine specificata. DataServiceContext aggiunge questo collegamento al set di collegamenti appena creati che verrà inviato al servizio dati alla chiamata successiva a SaveChanges. Per ulteriori informazioni, vedere Aggiornamento del servizio dati (WCF Data Services).
L'oggetto di destinazione deve essere del tipo identificato dal parametro sourceProperty o un sottotipo del tipo.
Esempi
Nell'esempio seguente viene mostrato come utilizzare i metodi AddLink e SetLink per creare collegamenti che definiscono relazioni. In questo esempio le proprietà di navigazione sull'oggetto Order_Details vengono impostate anche in modo esplicito. In questo esempio viene utilizzato l'oggetto DataServiceContext generato dallo strumento Aggiungi riferimento al servizio in base al servizio dati Northwind, creato al completamento della Guida rapida di WCF Data Services.
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)
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);
}