[方法] エンティティに対してメソッドを実行する

エンティティにはメソッドが含まれます。エンティティで使用できるメソッドを実行するために、Entity オブジェクトは Execute メソッドを提供します。

このトピックの 2 つのコード例は、Execute メソッドを使用して未加工のメソッド実行を行う方法を示しています。例の ExecuteEntityOverrideArgs メソッドは、メソッド呼び出しを実行する前に、パラメータの既定値を無効にして異なる値を使用します。

この例は、Execute メソッドを使用して未加工のメソッド実行を行う方法を示しています。また、例のこの ExecuteEntityOverrideArgs メソッドは、実行前にパラメータの既定値を無効にして異なる値を使用する方法を示しています。

注意

この例では Finder メソッドを実行しますが、通常、Finder メソッドの実行に Entity.Execute は使用しません。種類が Finder および Filter のメソッドを実行するには、FindFiltered および FindSpecific メソッドを使用する必要があります。

前提条件

  • 共有サービス プロバイダが既に作成されていることを確認します。

  • コード内の定数値 EnterYourSSPNameHere を共有リソース プロバイダの名前に置き換えます。

  • この例で参照される LobSystem およびエンティティ名がビジネス データ カタログに存在することを確認します。有効な名前を使用します。

プロジェクト参照

このサンプルを実行する前に、コンソール アプリケーション コード プロジェクトに以下のプロジェクト参照を追加します。

  • Microsoft.SharePoint

  • Microsoft.SharePoint.Portal

  • Microsoft.Office.Server

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Microsoft.Office.Server.ApplicationRegistry.MetadataModel;
using Microsoft.Office.Server.ApplicationRegistry.Runtime;
using Microsoft.Office.Server.ApplicationRegistry.SystemSpecific;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;

namespace Microsoft.SDK.SharePointServer.Samples
{
    class ExecuteEntity
    {
        const string yourSSPName ="EnterYourSSPNameHere";

        static void Main(string[] args)
        {
            SetupBDC();
            ExecuteEntity();
            ExecuteEntityOverrideArgs();
            Console.WriteLine("Press any key to exit...");
            Console.Read();
        }
        static void SetupBDC()
        {
            SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
        }

        static void ExecuteEntity()
        {
            NamedLobSystemInstanceDictionary sysInstances = ApplicationRegistry.GetLobSystemInstances();
            LobSystemInstance AdvWorksIns = sysInstances["AdventureWorksSampleInstance"];
            Entity prodEntity = AdvWorksIns.GetEntities()["Product"];
            MethodInstance methInst = prodEntity.GetFinderMethodInstance();
            IEntityInstanceEnumerator prodEntityInstanceEnumerator =
                (IEntityInstanceEnumerator)prodEntity.Execute(methInst,
                AdvWorksIns);
            while (prodEntityInstanceEnumerator.MoveNext())
            {
                IEntityInstance IE = prodEntityInstanceEnumerator.Current;
                foreach (Field f in prodEntity.GetFinderView().Fields)
                    Console.Write(IE[f]);
                Console.WriteLine("");
            }
        }
        static void ExecuteEntityOverrideArgs()
        {
            NamedLobSystemInstanceDictionary sysInstances = ApplicationRegistry.GetLobSystemInstances();
            LobSystemInstance AdvWorksIns = sysInstances["AdventureWorksSampleInstance"];
            Entity prodEntity = AdvWorksIns.GetEntities()["Product"];
            MethodInstance methInst = prodEntity.GetFinderMethodInstance();
            Object[] args = methInst.GetMethod().CreateDefaultParameterInstances(methInst);
            //Min ProductID
            args[0] = 1;
            //Max Product ID
            args[1] = 10;
            IEntityInstanceEnumerator prodEntityInstanceEnumerator =
                (IEntityInstanceEnumerator)
                prodEntity.Execute(methInst, AdvWorksIns, ref args);
            while (prodEntityInstanceEnumerator.MoveNext())
            {
                IEntityInstance IE = prodEntityInstanceEnumerator.Current;
                foreach (Field f in prodEntity.GetFinderView().Fields)
                    Console.Write(IE[f]);
                Console.WriteLine("");
            }
        }  
    }
} 

See Also

概念

ビジネス データ カタログ : メタデータ モデル

その他のリソース

メタデータ リポジトリを参照してメソッドおよびフィルタを実行する

ビジネス データ カタログを使用してカスタム アプリケーションを構築する