Compartir a través de


DataServiceContext.AddLink Método

Agrega el vínculo especificado al conjunto de objetos cuyo seguimiento realiza DataServiceContext.

Espacio de nombres:  System.Data.Services.Client
Ensamblado:  Microsoft.Data.Services.Client (en Microsoft.Data.Services.Client.dll)

Sintaxis

'Declaración
Public Sub AddLink ( _
    source As Object, _
    sourceProperty As String, _
    target As Object _
)
'Uso
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
)

Parámetros

  • source
    Tipo: System.Object
    Objeto de origen para el nuevo vínculo.
  • sourceProperty
    Tipo: System.String
    Nombre de la propiedad de navegación en el objeto de origen que devuelve el objeto relacionado.
  • target
    Tipo: System.Object
    Objeto relacionado con el objeto de origen por el nuevo vínculo.

Excepciones

Excepción Condición
ArgumentNullException

Cuando source, sourceProperty o target son NULL.

InvalidOperationException

Si un vínculo ya existe.

O bien

Si los objetos source o target están en un estado Detached o Deleted.

O bien

Si sourceProperty no es una colección.

Comentarios

Notifica a DataServiceContext que existe un nuevo vínculo entre los objetos de origen y de destino relacionados, y que la propiedad de origen especificada representa el vínculo. DataServiceContext agrega este vínculo al conjunto de vínculos recién creados que se enviarán al servicio de datos en la siguiente llamada a SaveChanges. Para obtener más información, vea Actualizar el servicio de datos (WCF Data Services).

El objeto de destino debe ser del tipo identificado por el parámetro sourceProperty o un subtipo del tipo.

Ejemplos

En el ejemplo siguiente se muestra cómo usar los métodos AddLink y SetLink para crear vínculos que definen relaciones. En este ejemplo, las propiedades de navegación del objeto Order_Details también se establecen explícitamente. En este ejemplo se usa el DataServiceContext generado por la herramienta Agregar referencia de servicio basándose en el servicio de datos de Northwind, que se crea cuando se completa el tutorial rápido de Servicios de datos de Microsoft WCF.

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);
}

Vea también

Referencia

DataServiceContext Clase

Espacio de nombres System.Data.Services.Client