Bagikan melalui


DataServiceContext.SetLink(Object, String, Object) Metode

Definisi

Memberi tahu DataServiceContext bahwa tautan baru ada di antara objek yang ditentukan dan bahwa tautan diwakili oleh properti yang ditentukan oleh sourceProperty parameter .

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

Objek sumber untuk tautan baru.

sourceProperty
String

Properti pada objek sumber yang mengidentifikasi objek target tautan baru.

target
Object

Objek anak yang terlibat dalam tautan baru yang akan diinisialisasi dengan memanggil metode ini. Objek target harus merupakan subjenis dari jenis yang diidentifikasi oleh sourceProperty parameter . Jika target diatur ke null, panggilan mewakili operasi hapus tautan.

Pengecualian

Ketika source, sourceProperty atau target null.

Tautan yang ditentukan sudah ada.

-atau-

Objek yang disediakan sebagai source atau berada dalam Detached status atau Deletedtarget .

-atau-

sourceProperty bukan properti navigasi yang menentukan referensi ke satu objek terkait.

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.

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

Tautan baru dibuat dalam status Added . DataServiceContext menambahkan tautan baru ini ke kumpulan tautan yang baru dibuat untuk dikirim ke layanan data pada panggilan berikutnya ke SaveChanges.

Jika argumen target null, tautan yang diwakili oleh sourceProperty harus dihapus atau dihapus (Tautan dipindahkan ke status Deleted ).

Tautan adalah hubungan satu arah. Jika ada penunjuk belakang yang menunjukkan asosiasi dua arah, metode ini harus dipanggil lagi untuk memberi tahu DataServiceContext tautan kedua

Metode ini hanya mendukung penambahan tautan ke hubungan dengan multiplicity = 1 (Properti sumber adalah referensi objek). Misalnya, jika kelas terkait dengan kelas lain oleh properti, panggilan ini dapat digunakan untuk berhubungan dengan PersonPerson.FriendPersonPerson Metode ini akan memberikan pengecualian jika yang sourceProperty diwakili memiliki hubungan kardinalitas lebih dari satu.

Berlaku untuk