Bagikan melalui


DataServiceContext.AddLink(Object, String, Object) Metode

Definisi

Menambahkan tautan yang ditentukan ke kumpulan objek DataServiceContext pelacakan.

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

Objek sumber untuk tautan baru.

sourceProperty
String

Nama properti navigasi pada objek sumber yang mengembalikan objek terkait.

target
Object

Objek yang terkait dengan objek sumber oleh tautan baru.

Pengecualian

Ketika source, sourceProperty, atau target null.

Jika tautan sudah ada.

-atau-

Jika objek source atau target berada dalam status Detached atau Deleted .

-atau-

Jika sourceProperty bukan koleksi.

Contoh

Contoh berikut menunjukkan cara menggunakan AddLink metode dan SetLink untuk membuat tautan yang menentukan hubungan. Dalam contoh ini, properti navigasi pada Order_Details objek juga diatur secara eksplisit. Contoh ini menggunakan DataServiceContext yang dihasilkan oleh alat Tambahkan Referensi Layanan berdasarkan layanan data Northwind, yang dibuat saat Anda menyelesaikan Layanan Data WCF .

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)

Keterangan

Memberi tahu DataServiceContext bahwa tautan baru ada antara objek sumber dan target terkait dan bahwa tautan diwakili oleh properti sumber yang ditentukan. DataServiceContext menambahkan tautan ini ke kumpulan tautan yang baru dibuat yang akan dikirim ke layanan data pada panggilan berikutnya ke SaveChanges.

Tautan adalah hubungan satu arah. Karena asosiasi dua arah, dalam asosiasi satu-ke-satu, Anda harus memanggil lagi AddLink untuk membuat tautan terbalik, dan dalam asosiasi banyak ke satu, Anda harus memanggil SetLink untuk membuat tautan referensi ke akhir asosiasi "satu".

Objek target harus berjenis yang diidentifikasi oleh sourceProperty parameter atau subjenis jenis.

Berlaku untuk