实现 SpecificFinder

上次修改时间: 2015年3月9日

适用范围: SharePoint Server 2010

本文内容
说明
语法
备注
示例

说明

SpecificFinder 仅返回一个外部项目。指定某个项目的标识符之后,此构造型可用于读取该项目。例如,指定 Customer 业务对象后,此构造型可用于获取给定客户 ID 的详细客户信息。

指定标识符之后,外部内容类型应至少具有一个返回单个实例的 SpecificFinder 方法实例。如果未定义外部内容类型的 SpecificFinder 方法实例,则不能对其进行操作,不能对其进行搜索和编制索引,也不能将其用于任何 Business Connectivity Services 演示文稿功能(相关的列表 Web 部件除外)。

语法

以下是 SpecificFinder 的典型方法签名:

EntityDataType GetEntityById(IdType1 id1, ...)

备注

若要成为合格的 SpecificFinder,对应的方法应执行以下操作:

  • 将外部内容类型的所有标识符作为输入。

  • 返回具有一组字段的结构(在 Business Connectivity Services 中称为视图;请参阅本主题中的定义)。

若要成为合格的 SpecificFinder,对应的方法必须执行以下操作:

  • 返回一个外部内容类型的单个外部项。

  • 返回必须包含所有外部项标识符的字段。

备注

通常,读取操作查询外部系统以获取数据。确保您正确处理 SpecificFinder 方法中的空值。外部系统中某些字段有可能为空(例如 hobbies 或 address)。能够正确处理错误和异常很重要。因此,请检查代码中的 null 字符串和空字符串,然后进行修正。也可以考虑对类型描述符使用 NormalizeString 解释。

对 .NET 连接程序集中的给定条件引发表 1 中所示的异常。

表 1. 异常

异常名称

使用条件….

ObjectNotFoundException

外部系统上未找到项目(可能已删除)。

ObjectDeletedException

已从外部系统中删除该项目。应在可以将删除项目跟不具有项目区分开时引发此异常。

备注

在 Web 服务中,SpecificFinder 应在未找到项目时返回空值。

视图是字段的集合,其中每个字段都具有名称、类型以及本地化的显示名称(可选)。它是示意图定义(与 SQL 数据中的视图不同),后者包括示意图定义和作为查询的一部分返回的数据。

例如,如果 Employee 为外部内容类型,则 Employee 视图可能包含以下字段:

  • ID

  • 名称

  • 地址

  • 定义

Business Connectivity Services 中的相同业务对象可以有多个视图。例如,Employee 的另一个视图可能包含以下字段:

  • ID

  • 名称

  • 地址

  • 定义

  • 年收入

  • 开始日期

  • 资历等级

  • 紧急联系方式

在 SharePoint 2010 中,一个外部内容类型可以有多个具有不同视图的特定查找工具。在以下几种方案中,多个特定查找工具非常有用:

  • **基于角色的视图:**指定 EmployeeId 后,可以使用一种特定查找工具方法显示同级的受限视图,使用另一种特定查找工具方法显示员工或员工管理者的另一个详细视图。

  • **缓存优化:**Business Connectivity Services 为将业务数据与 Microsoft Office 客户端(例如 Outlook 和 SharePoint Workspace)断开提供了丰富的支持。管理员可以针对详细视图禁用脱机功能,以便优化客户端的缓存性能。这样,用户可以在脱机时使用有限的视图,在联机时访问详细视图。

备注

如果一个业务对象有多个具有不同视图的特定查找工具,建议每个特定查找工具方法至少具有一个查找工具方法。

备注

以下为有关 BDC 和外部列表的其他一些注意事项。

  • BDC 支持只读字段。

  • 外部列表不支持复杂类型。

  • 需要将为外部列表创建的默认表单替换为 Microsoft InfoPath 2010 表单才能处理复杂类型。

示例

代码段:实现 SpecificFinder

请参阅

概念

XML 代码段:为 SpecificFinder 方法建模