步骤 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

先决条件

步骤 2:定义实体、方法和筛选器

步骤 3(可选):定义操作

步骤 4(可选):定义关联

定义 IDEnumerator 以启用索引和搜索

  1. 打开步骤 2、3 或 4 中的 AdventureWorks2000.XML 文件。

  2. 在 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 &gt; 1200 AND ProductID &lt; 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>
    
  3. 保存 XML 文件。

  4. 再次添加应用程序定义之前,必须从业务数据目录中删除您在步骤 1 中创建的 AdventureWorksSample 应用程序。若要删除 AdventureWorksSample,请按照下列步骤操作:

    1. 打开“SharePoint 3.0 管理中心”。

    2. 在左侧导航窗格中,单击您的“共享服务提供程序(SSP)”的名称。

    3. 在“业务数据目录”部分中,单击“查看应用程序”以查看已注册的应用程序。

    4. 单击“AdventureWorksSample”以打开“查看应用程序: AdventureWorksSample”页面。

    5. 最后,单击“应用程序设置”部分中的“删除应用程序”。

  5. 将应用程序定义添加到业务数据目录。有关详细信息,请参阅如何:将应用程序定义添加到业务数据目录

  6. 添加内容源

  7. 映射已爬网属性

  8. 创建搜索范围

完成此演练之后,AdventureWorks2000 示例数据库中的内容可用于搜索查询。接下来,必须自定义搜索用户界面,或创建自定义搜索应用程序,以便对业务数据内容执行查询。

有关执行这些后续步骤的信息,请参阅:

演练:向搜索中心添加选项卡和带有企业级搜索 Web 部件的自定义搜索页

演练:创建 AdventureWorks 业务数据应用程序示例的 ASP.NET Web 部件

Next Steps

步骤 6(可选):指定访问权限

See Also

任务

AdventureWorks SQL Server 2000 示例

概念

业务数据目录:元数据模型