IEntityInstanceEnumerator インターフェイス (Microsoft.Office.Server.ApplicationRegistry.Runtime)

コレクションまたはストリームを表すバックエンドによって返されるネイティブ オブジェクトをエンティティ インスタンスとしてラップし、エンティティ インスタンス コレクション全体で 1 回の繰り返しをサポートします。

名前空間: Microsoft.Office.Server.ApplicationRegistry.Runtime
アセンブリ: Microsoft.SharePoint.Portal (microsoft.sharepoint.portal.dll 内)

構文

'宣言
Public Interface IEntityInstanceEnumerator
    Inherits IEnumerator(Of IEntityInstance)
'使用
Dim instance As IEntityInstanceEnumerator
public interface IEntityInstanceEnumerator : IEnumerator<IEntityInstance>

備考

列挙子は、コレクションのデータ読み取りに使用できますが、下位コレクションの修正には使用できません。

IEntityInstanceEnumerator オブジェクトはストリーミング (ストリーミング可能なオブジェクトを返す場合かつその場合に限り) をサポートしているため、バックエンド アプリケーションが大量のデータを返すときに非常に便利です。

重要重要 :

IEntityInstanceEnumerator インターフェイスが IDisposable インターフェイスを実装するため、Close メソッドを使用して閉じなければ接続がリークされてしまいます。

概念上、エンティティ インスタンスを、ビジネス データ カタログのバックエンド ビジネス アプリケーションから返される単一行のデータとして見なすことができます。IEntityInstance インターフェイスは下位データ ソースを抽象化し、アプリケーション固有のコーディングの枠組みを学ぶ必要性をなくすため、唯一の単純化された方法でクライアントがすべてのビジネス アプリケーションにアクセスできるようになります。IEntityInstance インターフェイスを使用すると、Web サービスによって返される複雑な Microsoft .NET Framework 構造の処理とまったく同じようにデータベースの 1 行のデータを処理できるようになります。

ビジネス データ カタログのエンティティ インスタンスには、固有のセマンティクスが備えられています。たとえば、その行のどのフィールドがエンティティ インスタンスの識別子を表しているのかが分かる機能、およびエンティティ インスタンス上の GetAssociated()GetIdentifierValues()Execute() などのメソッドを呼び出すことができる機能があります。

この例は、AdventureWorks2000 サンプルで Product エンティティに対して Finder メソッドを実行する方法を示しています。

Prerequisites

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

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

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

Project References

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

  • 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 ExecuteFinder
    {
        const string yourSSPName ="EnterYourSSPNameHere";

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

        static void FindAll()
        {
            NamedLobSystemInstanceDictionary sysInstances = ApplicationRegistry.GetLobSystemInstances();
            LobSystemInstance AdvWorksIns = sysInstances["AdventureWorksSampleInstance"];
            Entity prodEntity = AdvWorksIns.GetEntities()["Product"];
            FilterCollection fc = prodEntity.GetFinderFilters();
            // leave the filtercollection unmodified - don't set any filters, and then Business Data Catalog will bring back everything
            IEntityInstanceEnumerator prodEntityInstanceEnumerator = prodEntity.FindFiltered(fc, AdvWorksIns);
            while (prodEntityInstanceEnumerator.MoveNext())
            {
                IEntityInstance IE = prodEntityInstanceEnumerator.Current;
                foreach (Field f in prodEntity.GetFinderView().Fields)
                    Console.Write(IE[f]);
                Console.WriteLine("");
            }
        }
       
    }
}

関連項目

参照

IEntityInstanceEnumerator メンバ
Microsoft.Office.Server.ApplicationRegistry.Runtime 名前空間