다음을 통해 공유


DataServiceContext.AddLink 메서드

DataServiceContext에서 추적 중인 개체 집합에 지정된 링크를 추가합니다.

네임스페이스:  System.Data.Services.Client
어셈블리:  Microsoft.Data.Services.Client(Microsoft.Data.Services.Client.dll)

구문

‘선언
Public Sub AddLink ( _
    source As Object, _
    sourceProperty As String, _
    target As Object _
)
‘사용 방법
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
)

매개 변수

  • source
    유형: System.Object
    새 링크의 원본 개체입니다.
  • sourceProperty
    유형: System.String
    관련 개체를 반환하는 원본 개체의 탐색 속성 이름입니다.
  • target
    유형: System.Object
    새 링크를 통해 원본 개체와 관련된 개체입니다.

예외

예외 조건
ArgumentNullException

source, sourceProperty 또는 target이 null인 경우

InvalidOperationException

링크가 이미 있는 경우

또는

source 또는 target 개체가 Detached 또는 Deleted 상태인 경우

또는

sourceProperty가 컬렉션이 아닌 경우

주의

관련 원본 및 대상 개체 간에 새 링크가 있고 이 링크가 지정된 원본 속성으로 표현됨을 DataServiceContext에 알립니다. DataServiceContext는 다음에 SaveChanges를 호출할 때 데이터 서비스로 전송할 새로 만든 링크 집합에 이 링크를 추가합니다. 자세한 내용은 데이터 서비스 업데이트(WCF Data Services)를 참조하십시오.

대상 개체는 sourceProperty 매개 변수 또는 해당 형식의 하위 형식으로 식별되는 형식이어야 합니다.

다음 예제에서는 AddLink 및 SetLink 메서드를 사용하여 관계를 정의하는 링크를 만드는 방법을 보여 줍니다. 이 예제에서는 Order_Details 개체에 대한 탐색 속성도 명시적으로 설정됩니다. 이 예제에서는 WCF Data Services?퀵 스타트를 완료하면 생성되는 Northwind 데이터 서비스를 기반으로 서비스 참조 추가 도구에서 생성된 DataServiceContext를 사용합니다.

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

참고 항목

참조

DataServiceContext 클래스

System.Data.Services.Client 네임스페이스