DataServiceContext.SetLink(Object, String, Object) Methode

Definition

Benachrichtigt, DataServiceContext dass eine neue Verknüpfung zwischen den angegebenen Objekten vorhanden ist und dass die Verknüpfung durch die durch den sourceProperty Parameter angegebene Eigenschaft dargestellt wird.

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)

Parameter

source
Object

Das Quellobjekt für den neuen Link.

sourceProperty
String

Die Eigenschaft für das Quellobjekt, das das Zielobjekt der neuen Verknüpfung identifiziert.

target
Object

Das untergeordnete Objekt, das an der neuen Verknüpfung beteiligt ist, die durch Aufrufen dieser Methode initialisiert werden soll. Das Zielobjekt muss ein Untertyp des Typs sein, der durch den sourceProperty Parameter identifiziert wird. Wenn target dieser Wert auf NULL festgelegt ist, stellt der Aufruf einen Löschlinkvorgang dar.

Ausnahmen

Wenn source, sourceProperty oder target null sind.

Der angegebene Link ist bereits vorhanden.

-oder-

Die bereitgestellten source Objekte befinden sich oder target befinden sich im Detached Zustand.Deleted

-oder-

sourceProperty ist keine Navigationseigenschaft, die einen Verweis auf ein einzelnes verwandtes Objekt definiert.

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.

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

Ein neuer Link wird im Added Zustand erstellt. Dieser DataServiceContext neue Link wird dem Satz neu erstellter Verknüpfungen hinzugefügt, die beim nächsten Aufruf SaveChangesan den Datendienst gesendet werden sollen.

Wenn das Zielargument NULL ist, sollte die durch sourceProperty dargestellte Verknüpfung entfernt oder gelöscht werden (Die Verknüpfung wird in den Deleted Zustand verschoben).

Verknüpfungen sind unidirektionale Beziehungen. Wenn ein Zurückzeiger vorhanden ist, der eine bidirektionale Zuordnung angibt, sollte diese Methode erneut aufgerufen werden, um den DataServiceContext zweiten Link zu benachrichtigen.

Diese Methode unterstützt nur das Hinzufügen von Verknüpfungen zu Beziehungen mit Multiplikation = 1 (Die Quelleigenschaft ist ein Objektverweis). Wenn z. B. eine Klasse Person von einer Eigenschaft mit einer Person anderen Friend verknüpft ist, kann dieser Aufruf verwendet werden, um sich auf eine Beziehung zu PersonbeziehenPerson. Diese Methode löst eine Ausnahme aus, wenn die sourceProperty dargestellte Person eine Beziehung von Kardinalität mehr als eine hat.

Gilt für: