다음을 통해 공유


DataServiceContext.SetLink 메서드

지정된 개체 간에 새 링크가 있고 이 링크가 sourceProperty로 지정된 원본 속성으로 표현됨을 DataServiceContext에 알립니다.

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

구문

‘선언
Public Sub SetLink ( _
    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.SetLink(source, sourceProperty, _
    target)
public void SetLink(
    Object source,
    string sourceProperty,
    Object target
)
public:
void SetLink(
    Object^ source, 
    String^ sourceProperty, 
    Object^ target
)
member SetLink : 
        source:Object * 
        sourceProperty:string * 
        target:Object -> unit 
public function SetLink(
    source : Object, 
    sourceProperty : String, 
    target : Object
)

매개 변수

  • source
    유형: System.Object
    새 링크의 원본 개체입니다.
  • sourceProperty
    유형: System.String
    새 링크의 대상 개체를 식별하는 원본 개체의 속성입니다.
  • target
    유형: System.Object
    이 메서드를 호출하여 초기화할 새 링크에 포함된 자식 개체입니다.대상 개체는 sourceProperty 매개 변수로 식별되는 형식의 하위 형식이어야 합니다.target이 null로 설정된 경우 이 호출은 링크 삭제 작업을 나타냅니다.

예외

예외 조건
ArgumentNullException

source, sourceProperty 또는 target이 null인 경우

InvalidOperationException

지정된 링크가 이미 있는 경우

또는

source 또는 target으로 제공된 개체가 Detached 또는 Deleted 상태인 경우

또는

sourceProperty가 단일 관련 개체에 대한 참조를 정의하는 탐색 속성이 아닌 경우

주의

새 링크는 Added 상태로 만들어집니다. DataServiceContext는 다음에 SaveChanges를 호출할 때 데이터 서비스로 전송할 새로 만든 링크 집합에 이 새 링크를 추가합니다. 자세한 내용은 데이터 서비스 업데이트(WCF Data Services)를 참조하십시오.

대상 인수가 null인 경우 sourceProperty로 표현된 링크를 제거하거나 삭제해야 합니다(링크는 Deleted 상태로 전환됨).

이 메서드에서는 다중성이 1인 관계 즉, 원본 속성이 개체 참조인 관계에만 링크를 추가할 수 있습니다. 예를 들어 Person 클래스가 Friend 속성을 통해 다른 Person에 연결된 경우 이 호출을 사용하여 Person을 Person에 연결할 수 있습니다. 표시된 sourceProperty의 카디널리티 관계가 1보다 큰 경우 이 메서드는 예외를 throw합니다.

다음 예제에서는 AddLink 및 SetLink 메서드를 사용하여 관계를 정의하는 링크를 만드는 방법을 보여 줍니다. 이 예제에서는 Order_Details 개체에 대한 탐색 속성도 명시적으로 설정됩니다.

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 네임스페이스