DataServiceContext.AddLink(Object, String, Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Fügt den angegebenen Link dem Satz von Objekten hinzu, den der DataServiceContext nachverfolgt.
public:
void AddLink(System::Object ^ source, System::String ^ sourceProperty, System::Object ^ target);
public void AddLink (object source, string sourceProperty, object target);
member this.AddLink : obj * string * obj -> unit
Public Sub AddLink (source As Object, sourceProperty As String, target As Object)
Parameter
- source
- Object
Das Quellobjekt für den neuen Link.
- sourceProperty
- String
Der Name der Navigationseigenschaft des Quellobjekts, das das verknüpfte Objekt zurückgibt.
- target
- Object
Das Objekt bezogen auf das Quellobjekt durch den neuen Link.
Ausnahmen
Wenn source
, sourceProperty
oder target
NULL sind.
Wenn ein Link bereits vorhanden ist.
- oder -
Wenn das Objekt source
oder target
in Detached sind oder den Status Deleted aufweisen.
- oder -
Wenn sourceProperty
keine Auflistung ist.
Beispiele
Im folgenden Beispiel wird gezeigt, wie die AddLink-Methode und die SetLink-Methode verwendet werden, um Links zu erstellen, die Beziehungen definieren. In diesem Beispiel werden die Navigationseigenschaften für das Order_Details
-Objekt auch explizit festgelegt. In diesem Beispiel wird das DataServiceContext vom Tool Dienstverweis hinzufügen basierend auf dem Northwind-Datendienst generiert, der erstellt wird, wenn Sie die WCF Data Services abschließen.
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)
Hinweise
Benachrichtigt DataServiceContext, dass ein neuer Link zwischen der verwandten Quelle und den Zielobjekten vorhanden ist, und dass der Link von der angegebenen Quelleigenschaft vertreten wird. DataServiceContext fügt diesen Link dem Satz von neu erstellten Links hinzu, der beim nächsten Aufruf von SaveChanges an den Datendienst gesendet werden.
Links sind unidirektionale Beziehungen. Da Zuordnungen bidirektional sind, müssen Sie in einer 1:1-Zuordnung entweder erneut AddLink aufrufen, um den umgekehrten Link zu erstellen, und in einer Zuordnung mit vielen zu 1 müssen Sie aufrufen SetLink , um einen Verweislink zum "1"-Ende der Zuordnung zu erstellen.
Das Zielobjekt muss den vom Parameter sourceProperty
identifizierten Typ oder einen Untertyp aufweisen.