实现 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 中的错误处理功能。 |