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 オブジェクトのナビゲーション プロパティも明示的に設定されます。 この例では、Northwind データ サービスに基づいてサービス参照の追加ツールによって生成される DataServiceContext を使用します。これは、WCF Data Services クイック スタートの完了時に作成されます。

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 名前空間