DataServiceContext.AddLink(Object, String, Object) Methode

Definition

Fügt die angegebene Verknüpfung zu der Gruppe von Objekten hinzu, die nachverfolgt DataServiceContext werden.

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 für das Quellobjekt, das das zugehörige Objekt zurückgibt.

target
Object

Das Objekt im Zusammenhang mit dem Quellobjekt durch den neuen Link.

Ausnahmen

Wenn source, sourceProperty, oder target null sind.

Wenn bereits ein Link vorhanden ist.

-oder-

Wenn sich die source Objekte target in einem Detached Oder Deleted Zustand befinden.

-oder-

Wenn sourceProperty es sich nicht um eine Sammlung handelt.

Beispiele

Das folgende Beispiel zeigt, wie Sie mithilfe der AddLink Methoden SetLink Verknüpfungen erstellen, die Beziehungen definieren. In diesem Beispiel werden auch die Navigationseigenschaften für das Order_Details Objekt explizit festgelegt. In diesem Beispiel wird das DataServiceContext vom Tool "Dienstreferenz hinzufügen" basierend auf dem Northwind-Datendienst generierte Tool verwendet, das beim Abschließen der WCF Data Services erstellt wird.

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 eine neue Verknüpfung zwischen den zugehörigen Quell- und Zielobjekten vorhanden ist und dass die Verknüpfung durch die angegebene Quelleigenschaft dargestellt wird. Dieser DataServiceContext Link wird dem Satz neu erstellter Verknüpfungen hinzugefügt, die beim nächsten Aufruf SaveChangesan den Datendienst gesendet werden.

Verknüpfungen sind unidirektionale Beziehungen. Da Zuordnungen bidirektional sind, müssen Sie in einer 1:1-Zuordnung entweder erneut AddLink aufrufen, um die Rückwärtsverknüpfung zu erstellen, und in einer n:1-Zuordnung müssen Sie aufrufen SetLink , um einen Verweislink zum "1"-Ende der Zuordnung zu erstellen.

Das Zielobjekt muss vom Typ sein, der durch den sourceProperty Parameter oder einen Untertyp des Typs identifiziert wird.

Gilt für: