Method クラス (Microsoft.Office.Server.ApplicationRegistry.Administration)
基幹業務 (LOB) アプリケーションで実行可能なエンティティに関連する操作を表します。
名前空間: Microsoft.Office.Server.ApplicationRegistry.Administration
アセンブリ: Microsoft.SharePoint.Portal (microsoft.sharepoint.portal.dll 内)
構文
'宣言
<SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel:=True)> _
<SharePointPermissionAttribute(SecurityAction.Demand, ObjectModel:=True)> _
Public Class Method
Inherits IndividuallySecurableMetadataObject
'使用
Dim instance As Method
[SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel=true)]
[SharePointPermissionAttribute(SecurityAction.Demand, ObjectModel=true)]
public class Method : IndividuallySecurableMetadataObject
備考
メソッドはビジネス アプリケーションのビジネス ロジックへのポインタを表します。"顧客の一覧を取得する"、"指定した ID の注文を取得する"、および "商品の単価を更新する" などがメソッドの例です。
Method のメタデータは基本的に、メソッド署名を記述しています。たとえば、SQL ストアド プロシージャ、SQL クエリ、Web サービス メソッドの名前などを記述します。メソッド署名の定義は LOB アプリケーション内に置かれます。そのメソッドに関する情報は、Method メタデータ オブジェクトによって提供されるので、クライアントがメソッドを実行する必要があるときには、ランタイム オブジェクト モデルがメタデータ リポジトリに、この情報についてのクエリを発行することができます。
メソッドには パラメータ、MethodInstance、および FilterDescriptor が含まれます。
ビジネス データ カタログでは、複数のメソッド インスタンスのために同じバックエンド アプリケーションのメソッドを再利用できます。たとえば、AdventureWorks サンプルは、 GetProducts メソッドを、 Finder と SpecificFinder の両方として再利用します。SampleWebService メタデータ の GetCustomerByID メソッドは、顧客に関する SpecificFinder、およびアドレスを取得する Association メソッドとして再利用されます。
重要
ビジネス データ カタログは "最初の" 世代の Web サービスのみをサポートします。このため、Windows Communication Foundation Web サービスを使用している場合は、WS-I Basic Profile v1.0 のみを使用していることを確認してください。ビジネス データ カタログは、Windows Communication Foundation で提供されている、その他の 8 つのバインド オプションをサポートしていません。 サンプルについては、「SampleWebService メタデータ 」を参照してください。
オーバーロードしたメソッドを使って Web サービスを利用するときには、ビジネス データ カタログ メタデータ内に、同じ名前が付けられたメソッドが複数あってはいけません。1 つのエンティティが一度にオーバーライドすることができる Web プロキシ メソッドは 1 つだけです。ただし Web サービス内には、同じ名前のメソッドが複数あってもかまいません。ビジネス データ カタログが、メタデータ内の署名に基づいて正しいメソッドを選択します。
以下に、Method オブジェクトでデータベース システムのために使用できるプロパティを示します。
プロパティ |
型 |
必須かどうか |
既定値 |
制限/使用する値 |
---|---|---|---|---|
RdbCommandType |
System.Data.CommandType |
はい |
なし |
Text または StoredProcedure |
RdbCommandText |
System.String |
はい |
なし |
実行する SQL ステートメントまたはストアド プロシージャの名前。 |
例
次のコード例は、AdventureWorks2000 データベースの ProductModel エンティティ用の、MethodInstances、FilterDescriptors、DefaultValues、および TypeDescriptors を完備したメソッドを作成する方法を示しています。
Prerequisites
共有サービス プロバイダが既に作成されていることを確認します。
「[方法] 管理オブジェクト モデルを使用して LobSystem を作成する」に示すように、LobSystem インスタンスを作成して接続パラメータを設定します。
「[方法] 管理オブジェクト モデルを使用してエンティティを作成する」に示すように、ProductModel エンティティを作成します。
コード内の定数値 EnterYourSSPNameHere を共有リソース プロバイダの名前に置き換えます。
Project References
このサンプルを実行する前に、コンソール アプリケーション コード プロジェクトに以下のプロジェクト参照を追加します。
Microsoft.SharePoint
Microsoft.SharePoint.Portal
Microsoft.Office.Server
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server.ApplicationRegistry.Administration;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;
namespace Microsoft.SDK.SharePointServer.Samples
{
class GetStartedAndCreateSystem
{
const string yourSSPName ="EnterYourSSPNameHere";
static void Main(string[] args)
{
SetupBDC();
CreateFinderMethod();
Console.WriteLine("Press any key to exit...");
Console.Read();
}
static void SetupBDC()
{
SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
}
static void CreateFinderMethod()
{
LobSystemInstance mySysInstance = null;
LobSystemInstanceCollection sysInsCollection = ApplicationRegistry.Instance.GetLobSystemInstancesLikeName("AdventureWorksSampleFromCode");
foreach (LobSystemInstance sysInstance in sysInsCollection)
{
if (sysInstance.Name == "AdventureWorksSampleFromCode")
{
mySysInstance = sysInstance;
break;
}
}
EntityCollection entityColl = mySysInstance.LobSystem.Entities;
foreach (Entity entity in entityColl)
{
if (entity.Name == "ProductModel")
{
Method meth = entity.Methods.Create("GetProductModels", true, true);
meth.Properties.Add("RdbCommandText", "SELECT ProductModelID, Name, CatalogDescription FROM ProductModel WHERE Name LIKE @Name");
meth.Properties.Add("RdbCommandType", System.Data.CommandType.Text);
FilterDescriptor fd = meth.FilterDescriptors.Create("Name", true, "Microsoft.Office.Server.ApplicationRegistry.Runtime.WildcardFilter");
Parameter p1 = meth.Parameters.Create("@Name", true, Microsoft.Office.Server.ApplicationRegistry.MetadataModel.DirectionType.In, "Microsoft.Office.Server.ApplicationRegistry.Infrastructure.DotNetTypeReflector");
TypeDescriptor td1 = p1.CreateRootTypeDescriptor("Name", true, "System.String", null, fd, false);
Parameter p2 = meth.Parameters.Create("ProductModels", true, Microsoft.Office.Server.ApplicationRegistry.MetadataModel.DirectionType.Return, "Microsoft.Office.Server.ApplicationRegistry.Infrastructure.DotNetTypeReflector");
IList<Identifier> ids = new List<Identifier>(entity.Identifiers);
Identifier id = ids[0];
TypeDescriptor td2 = p2.CreateRootTypeDescriptor("ProductModelDataReader", true, "System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", null, null, true);
TypeDescriptor td21 = td2.ChildTypeDescriptors.Create("ProductModelDataRecord", true, "System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", null, null, false);
TypeDescriptor td210 = td21.ChildTypeDescriptors.Create("ProductModelID", true, "System.Int32", id, null, false);
TypeDescriptor td211 = td21.ChildTypeDescriptors.Create("Name", true, "System.String", null, null, false);
TypeDescriptor td212 = td21.ChildTypeDescriptors.Create("CatalogDescription", true, "System.String", null, null, false);
MethodInstance methInst1 = meth.MethodInstances.Create("ProductModelFinder", true, td2, Microsoft.Office.Server.ApplicationRegistry.MetadataModel.MethodInstanceType.Finder);
MethodInstance methInst2 = meth.MethodInstances.Create("ProductModelSpecificFinder", true, td2, Microsoft.Office.Server.ApplicationRegistry.MetadataModel.MethodInstanceType.SpecificFinder);
IList<MethodInstance> methInstCollection = new List<MethodInstance>(entity.MethodInstances);
td1.SetDefaultValue(methInstCollection[0].Id, "%");
td1.SetDefaultValue(methInstCollection[1].Id, "%");
Console.WriteLine("Created the finder method successfully.");
break;
}
}
}
}
}
継承階層
System.Object
Microsoft.Office.Server.ApplicationRegistry.Administration.MetadataObject
Microsoft.Office.Server.ApplicationRegistry.Administration.AccessControlledMetadataObject
Microsoft.Office.Server.ApplicationRegistry.Administration.IndividuallySecurableMetadataObject
Microsoft.Office.Server.ApplicationRegistry.Administration.Method
スレッドの安全性
この型のパブリックで静的な (Visual Basic では Shared) すべてのメンバは、スレッド セーフです。インスタンス メンバは、スレッド セーフであるとは保証されません。
関連項目
参照
Method メンバ
Microsoft.Office.Server.ApplicationRegistry.Administration 名前空間