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 メソッドを、 FinderSpecificFinder の両方として再利用します。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

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