Partager via


Méthode DataServiceContext.AddLink

Ajoute le lien spécifié à l'ensemble d'objets suivi par DataServiceContext.

Espace de noms :  System.Data.Services.Client
Assembly :  Microsoft.Data.Services.Client (en Microsoft.Data.Services.Client.dll)

Syntaxe

'Déclaration
Public Sub AddLink ( _
    source As Object, _
    sourceProperty As String, _
    target As Object _
)
'Utilisation
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
)

Paramètres

  • source
    Type : System.Object
    Objet source pour le nouveau lien.
  • sourceProperty
    Type : System.String
    Nom de la propriété de navigation sur l'objet source qui retourne l'objet associé.
  • target
    Type : System.Object
    Objet associé à l'objet source par le nouveau lien.

Exceptions

Exception Condition
ArgumentNullException

Lorsque source, sourceProperty ou target est null.

InvalidOperationException

Si un lien existe déjà.

ou

Si les objets source ou target sont à l'état Detached ou Deleted.

ou

Si sourceProperty n'est pas une collection.

Notes

Informe le DataServiceContext qu'un nouveau lien existe entre les objets source et cible associés, et que ce lien est représenté par la propriété source spécifiée. DataServiceContext ajoute ce lien à l'ensemble de liens nouvellement créés qui seront envoyés au service de données lors de l'appel suivant à SaveChanges. Pour plus d'informations, consultez Mise à jour du service de données (WCF Data Services).

L'objet cible doit être du type identifié par le paramètre sourceProperty ou un sous-type de ce type.

Exemples

L'exemple suivant montre comment utiliser les méthodes AddLink et SetLink pour créer des liens qui définissent des relations. Dans cet exemple, les propriétés de navigation sur l'objet Order_Details sont également définies explicitement. Cet exemple utilise le DataServiceContext généré par l'outil Ajouter une référence de service basé sur le service de données Northwind, qui est créé lorsque vous réalisez le démarrage rapide de Services de données 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);
}

Voir aussi

Référence

DataServiceContext Classe

Espace de noms System.Data.Services.Client