如何:对实体执行 Finder 方法
Finder 是一种从后端业务应用程序中返回 entity 实例的特殊方法。例如,对于 Customer 实体,Finder 方法可能是一个存储过程或一个简单的 SELECT 语句,如下所示:
SELECT * FROM Customers
本主题演示如何对在业务数据目录中注册的实体执行 Finder 方法。
示例
此示例演示如何对 AdventureWorks2000 示例中的 Product 实体执行 Finder 方法。
先决条件
确保已创建了一个共享服务提供程序。
用共享资源提供程序的名称替换代码中的常量值 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 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();
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("");
}
}
}
}