次の方法で共有


コード スニペット: 外部コンテンツ タイプの BulkAssociationNavigator メソッド インスタンスを実行する

最終更新日: 2010年5月6日

適用対象: SharePoint Server 2010

この記事の内容
説明
前提条件
この例を使用するには

説明

以下のコード例は、サーバー上で BDC ランタイム オブジェクト モデルを使用することにより、プログラミングによって外部コンテンツ タイプの BulkAssociationNavigator メソッド インスタンスを実行する方法を示します。

前提条件

  • サーバー上の Microsoft SharePoint Server 2010 あるいは Microsoft SharePoint Foundation 2010。

  • クライアント コンピューター上の Microsoft .NET Framework 3.5 と Microsoft Visual Studio。

  • BDC メタデータ ストアに登録された、少なくとも 1 つの外部コンテンツ タイプ。

この例を使用するには

  1. Visual Studio を開始し、C# コンソール アプリケーション プロジェクトを作成します。プロジェクトを作成するときに、[.NET Framework 3.5] を選択します。

  2. [表示] メニューから、[プロパティ ページ] をクリックしてプロジェクト プロパティを表示します。

  3. [ビルド] タブから、[プラットフォーム ターゲット] で、[Any CPU] を選択します。

  4. プロジェクト プロパティ ウィンドウを閉じます。

  5. [ソリューション エクスプローラー] の [参照設定] で、[System] と [System.Core] を除いて、すべてのプロジェクト参照を削除します。

  6. プロジェクトに以下の参照を追加します。

    1. Microsoft.BusinessData

    2. Microsoft.SharePoint

    3. Microsoft.SharePoint.BusinessData

  7. この手順の最後に示すコードで、Program.cs で自動生成されたコードを置換します。

  8. 有効な値で、エンティティ名 LobSystem の名前と LobSystemInstance の名前の値を置換します。

  9. プロジェクトを保存します。

  10. プロジェクトをコンパイルして、実行します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.BusinessData.MetadataModel;
using Microsoft.BusinessData.MetadataModel.Collections;
using Microsoft.BusinessData.Runtime;
using System.Diagnostics;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.BusinessData.SharedService;

namespace SDKSamples
{
    class Methods
    {
        //Foreign Key Based BulkAssociationNavigator.
        public static void BulkAssociationNavigatorSample()
        {
                BdcService service = 
                    SPFarm.Local.Services.GetValue<BdcService>
                    (String.Empty);
                IMetadataCatalog catalog = 
                    service.GetDatabaseBackedMetadataCatalog(
                    SPServiceContext.Current);

                // Get entities.
                IEntity customerEntity = 
                    catalog.GetEntity("AdventureWorks", "Customer");
                IEntity salesOrderEntity = 
                    catalog.GetEntity("AdventureWorks", "SalesOrder");

                //Get LOB System instance.
                ILobSystemInstance lobSystemInstance = 
                    salesOrderEntity.GetLobSystem().
                    GetLobSystemInstances()["AdventureWorks"];

                // Get the source entity instance with ID 1 to use 
                // to navigate the association.
                IEntityInstance customer1 = 
                    customerEntity.FindSpecific(
                    new Identity(1), 
                    "Read Item", 
                    lobSystemInstance, 
                    OperationMode.Offline);
                IEntityInstance customer2 = 
                    customerEntity.FindSpecific(
                    new Identity(2), 
                    "Read Item", 
                    lobSystemInstance, 
                    OperationMode.Offline);

                // Get the association.
                IAssociation association = 
                    (IAssociation)salesOrderEntity.GetMethodInstance(
                    "Bulk Customers Sales Orders", 
                    MethodInstanceType.BulkAssociationNavigator);

                // Create a collection with the entity instance.
                EntityInstanceCollection sourceInstances1 = 
                    new EntityInstanceCollection(1);
                sourceInstances1.Add(customer1);
                EntityInstanceCollection sourceInstances2 = 
                    new EntityInstanceCollection(1);
                sourceInstances2.Add(customer2);

                IList<EntityInstanceCollection> entityInstanceCollectionList = 
                    new List<EntityInstanceCollection>(2);
                entityInstanceCollectionList.Add(sourceInstances1);
                entityInstanceCollectionList.Add(sourceInstances2);

                IEntityInstanceEnumerator associatedInstances = null;
                try
                {
                    // Navigate the association.
                    associatedInstances = 
                        salesOrderEntity.FindAssociatedMultiple(
                        entityInstanceCollectionList, 
                        association, 
                        lobSystemInstance, 
                        OperationMode.Offline);

                    // List all sales orders for customer 1.
                    Debug.WriteLine(
                        "Listing customer's 1 sales orders ID and dates:");
                    while (associatedInstances.MoveNext())
                    {
                        Debug.WriteLine(
                            String.Format(
                            "Id: {0}, OrderDate: {1}", 
                            associatedInstances.Current["SalesOrderID"], 
                            associatedInstances.Current["OrderDate"]));
                    }
                }
                finally
                {
                    // Ensure the enumerator is closed.
                    if (associatedInstances != null)
                    {
                        associatedInstances.Close();
                    }
                }
            }
        }       
    }
}

関連項目

参照

BdcService

Services

IMetadataCatalog

GetDatabaseBackedMetadataCatalog(SPServiceContext)

GetEntity(String, String)

IEntity

GetLobSystem()

GetLobSystemInstances()

ILobSystemInstance

IEntityInstance

FindSpecific(Identity, String, ILobSystemInstance, OperationMode)

GetMethodInstance(String, MethodInstanceType)

IAssociation

EntityInstanceCollection

IEntityInstanceEnumerator

FindAssociatedMultiple(IList<EntityInstanceCollection>, IAssociation, ILobSystemInstance, OperationMode)