步骤 5(可选):定义 IDEnumerator 方法和启用业务数据搜索
若要启用业务数据搜索,必须在元数据中定义一个 SpecificFinder,以及称为 IDEnumerator 的一种特殊 MethodInstance 方法。由于已在步骤 2 中为 Product 实体定义了 SpecificFinder 方法,因此,只需在本步骤中定义 IDEnumerator 方法。IDEnumerator 方法为实体返回 ID(唯一键)的可搜索列表。此列表启用 IDEnumerator 方法返回其 ID 的实体的索引。
备注
如果需要实行增量爬网,则还必须确保 IDEnumerator 中针对实体的某个返回字段表示上次在 LOB 应用程序中更新实体实例(或数据库术语中的行)的时间。然后,应使用 IDEnumerator 的返回值(表示上次修改日期的那一个)中的 TypeDescriptor 的名称,来设置实体的 __BdcLastModifiedTimestamp 属性。
实体具有零个或一个 IDEnumerator。IDEnumerator 的定义完全类似于 Finder 方法,但有一点除外:它具有零个筛选器,并仅返回 ID 字段或 ID 和 LastModifiedDate 字段。
下面的示例演示如何定义 IDEnumerator,以便为 AdventureWorks2000 数据库中的产品编制索引和搜索这些产品。
备注
此示例使用 Microsoft SQL Server 2000 数据库,它支持数据流。为了改善 Web 服务和其他非流式后端应用程序的性能,应按以下所示在 IDEnumerator 方法中使用 LastIdSeen 筛选器:
SELECT TOP 100 Id FROM Customers WHERE Id>=@LastIdSeen
ORDER BY Id
先决条件
或
或
定义 IDEnumerator 以启用索引和搜索
打开步骤 2、3 或 4 中的 AdventureWorks2000.XML 文件。
在 Product 实体 XML 中,将针对 IDEnumerator 方法的以下 XML 添加到 GetProducts 方法定义之后:
<Method Name="ProductIDEnumerator"> <!-- Method for enabling business data search. The method returns a list of IDs. Business Data Catalog will use the SpecificFinder method on each of these IDs when indexing the prodocuts.--> <Properties> <Property Name="RdbCommandText" Type="System.String">SELECT ProductID FROM Product WHERE ProductID > 1200 AND ProductID < 1300</Property> <Property Name="RdbCommandType" Type="System.String">Text</Property> </Properties> <Parameters> <Parameter Name="ProductIDs" Direction="Return"> <TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="Products"> <TypeDescriptors> <TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="Product"> <TypeDescriptors> <TypeDescriptor TypeName="System.Int32" IdentifierName="ProductID" Name="ProductID"> <LocalizedDisplayNames> <LocalizedDisplayName LCID="1033">ID</LocalizedDisplayName> </LocalizedDisplayNames> </TypeDescriptor> </TypeDescriptors> </TypeDescriptor> </TypeDescriptors> </TypeDescriptor> </Parameter> </Parameters> <MethodInstances> <MethodInstance Name="ProductIDEnumeratorInstance" Type="IdEnumerator" ReturnParameterName="ProductIDs" /> </MethodInstances> </Method>
保存 XML 文件。
再次添加应用程序定义之前,必须从业务数据目录中删除您在步骤 1 中创建的 AdventureWorksSample 应用程序。若要删除 AdventureWorksSample,请按照下列步骤操作:
打开“SharePoint 3.0 管理中心”。
在左侧导航窗格中,单击您的“共享服务提供程序(SSP)”的名称。
在“业务数据目录”部分中,单击“查看应用程序”以查看已注册的应用程序。
单击“AdventureWorksSample”以打开“查看应用程序: AdventureWorksSample”页面。
最后,单击“应用程序设置”部分中的“删除应用程序”。
将应用程序定义添加到业务数据目录。有关详细信息,请参阅如何:将应用程序定义添加到业务数据目录。
完成此演练之后,AdventureWorks2000 示例数据库中的内容可用于搜索查询。接下来,必须自定义搜索用户界面,或创建自定义搜索应用程序,以便对业务数据内容执行查询。
有关执行这些后续步骤的信息,请参阅:
演练:向搜索中心添加选项卡和带有企业级搜索 Web 部件的自定义搜索页
演练:创建 AdventureWorks 业务数据应用程序示例的 ASP.NET Web 部件
Next Steps
See Also
任务
AdventureWorks SQL Server 2000 示例