[方法] エンティティに対してメソッドを実行する
エンティティにはメソッドが含まれます。エンティティで使用できるメソッドを実行するために、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("");
}
}
}
}