지정된 개체 간에 새 링크가 있고 이 링크가 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);
}