实现 Updater

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

适用范围: SharePoint Server 2010

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

说明

Updater 方法实例使您能够更新外部系统中的现有实体实例。例如,假定有一个名称为 Customer 的业务对象,可以使用此构造型来更新外部系统中的客户"John"的地址。

如果您未定义 Updater 方法,则将无法使用该实体的 Business Connectivity Services 功能来更新项。例如,您不能通过单击基于外部内容类型的外部列表的功能区上的"编辑项"按钮来编辑该列表中的项。

BDC 在更新之前执行读取操作以检测任何数据冲突。

对于 Updater 方法,更新项所需的字段集被称为"Updater 视图"。

语法

以下是针对 Updater 方法的典型方法签名:

void UpdateEntity(EntityDataType fields)
void UpdateEntity(EntityDataType fields, EntityDataType previousValuesOfFields)

备注

满足 Updater 方法的要求:

  • Updater 方法应将项的标识符(或标识符的组合)视为输入。

  • Updater 方法应接受 SpecificFinder 方法的所有读取/写入字段。

  • Updater 视图必须等于 SpecificFinder 视图,或者是它的子集。

备注

我们建议您将更新方法事务化以避免可能出现的数据丢失情况。

如果存在多个特定的查找器,则 Updater 视图必须等于至少一个 SpecificFinder 视图,或者是它的子集。

而对于 Creator 视图,Updater 视图必须等于特定的一个查找器的视图,或者是它的子集。它同时还必须包含非只读特定查找器中所有的字段,这是因为 Business Connectivity Services 自动生成的表单依赖于 SpecificFinder 视图。反之,则将无法更新 Updater 视图中的额外字段。与创建操作相同,Business Connectivity Services 将检查此依赖关系,并在外部列表上禁用更新操作。也可通过此构造型来更新可更新的标识符(或标识符组合),但是 Business Connectivity Services 自动生成的表单不支持它们。

表 1 总结了 Creator 视图与 Update 视图的依赖关系以及创建和更新操作的状态。

表 1. Creator 视图与 Updater 视图的依赖关系以及创建和更新操作的状态

方案编号

SpecificFinder 视图中的字段

Creator 视图中的字段

Updater 视图中的字段

允许的操作

备注

1.     

A

B(只读)

C

D

E(只读)

A

B

C

D

E

F

A

C

D

F

创建:不允许

更新:不允许

脱机创建:不允许

脱机更新:不允许

无法在特定查找器上找到字段 F。这将导致 BCS 禁用创建操作和更新操作。

2.     

A

B(只读)

C

D

E(只读)

A

B

C

D

E

A

C

D

创建:允许

更新:允许

脱机创建:允许

脱机更新:允许

在创建期间,用户可指定字段 B 和字段 E 的值,但无法在以后更新。

3.     

A

B(只读)

C

D

E(只读)

A

B

A

C

D

创建:允许

更新:允许

脱机创建:允许

脱机更新:允许

在创建期间,用户可指定字段 B 的值,但无法在以后进行更新。

字段 E 的值将由外部系统分配,并且无法由用户更新。

对于脱机创建,在创建之后将立即调用更新操作。

4.     

A

B(只读)

C

D

E(只读)

A

B

A

C

创建:仅在默认 EL 表单上允许

更新:不允许

脱机创建:不允许

脱机更新:不允许

无法更新字段 D。这种不一致性将导致 BCS 禁用更新操作。

禁用脱机创建,因为不存在有效的更新操作。

5.     

A

B(只读)

C

D

E(只读)

A

C

D

未定义更新操作

创建:允许

更新:不允许

脱机创建:允许

脱机更新:不允许

字段 B 和字段 E 的值由外部系统分配。

6.     

A

B(只读)

C

D

E(只读)

A

B

C

未定义更新操作

创建:仅在默认 EL 表单上允许

更新:不允许

脱机创建:不允许

脱机更新:不允许

在创建期间,无法设置字段 D 的值,而且没有定义有效的更新操作来在以后设置此字段的值。这将导致 BCS 禁用脱机创建操作。

备注

确保您正确处理 null 值。验证字段是否为必需的,且不将 null 分配到非必需的字段。

警告注释警告

参数的名称必须与外部系统中所定义的名称匹配。参数名称区分大小写。如果所有方法上的参数名称不是相同的,则 Microsoft SharePoint Designer 2010 将这些名称解释为不同的字段。

一定要正确地处理异常。表 2 中列出了 Updater 存在的几个重要的异常。

表 2. 异常

异常名称

在以下情况下使用此异常

AccessDeniedException

禁止用户在外部系统上执行此操作。

ConflictDetectedException

用于解决冲突。某个项同时由另一用户进行更新和更改。

LobBusinessErrorException

确保按原样向用户显示错误消息(来自外部系统)。

ObjectDeletedException

已知要删除某个项时使用此异常。

ObjectNotFoundException

未找到某个项。

RuntimeException

如果更新失败,确保引发此异常,以向用户发出警告,并使用 Microsoft Outlook 2010 和 Microsoft SharePoint Workspace 2010 中的错误处理功能。

示例

代码段:实现 Updater

请参阅

概念

XML 代码段:为 Updater 方法建模

代码段:执行外部内容类型的 Updater 方法实例