实现 Creator

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

适用范围: SharePoint Server 2010

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

说明

利用 Creator 方法实例,您可创建一个新的实体实例。例如,假定有一个名为 Customer 的业务对象,可使用此方法在外部系统中创建一个客户"John"。

如果外部内容类型没有一个 Creator 构造型,则无法通过使用 Business Connectivity Services 功能来创建新项(实体实例)。例如,您无法通过单击某个外部列表功能区上的"新建"按钮来创建一个项。

利用 Create 方法,您可通过指定 Create 所需的字段值,在外部系统上创建外部项。创建新项所需的字段集被称为"Creator 视图"。这些字段值不一定与外部项的字段对应。此方法必须返回与所创建的外部项对应的标识。必须从某个视图中创建一个以输入的形式提供给此方法的 IFieldValueDictionary 实例。

利用此方法,您还可通过指定所创建的外部项的字段值来创建一个外部项。如果 Create 方法实例接受所提供的所有字段,则 BDC 将仅调用 Create 方法实例。否则,BDC 还将对所创建的外部项调用 Update MethodInstance,以便为剩余的字段设置指定的值。此方法将 EntityInstanceReference 返回到所创建的外部项。应从与 SpecificFinder 类型的 MethodInstance(通过 GetCreatorView 方法获得)对应的视图来创建以输入的形式提供给此方法的 IFieldValueDictionary 实例。

语法

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

structureContainingIdentifierValues CreateEntity(EntityDataType fields)
void CreateEntity(EntityDataType fields)
structureContainingIdentifierValues CreateEntity()

备注

若要作为合格的 Creator,所对应的方法:

  • 应接受在外部系统中创建实例所必需的字段作为输入参数。

  • 可接受外部系统中的可选字段作为输入参数。

  • 可接受项的标识符(或标识符的组合)作为输入,或者,可为新建的项返回标识符(或标识符的组合)。

  • 应具备事务性以避免丢失数据。

Creator 视图应该等于 SpecificFinder 方法的视图,或是此方法视图的子集。(请参阅以下示例)。如果 Creator 所具有的字段多于 SpecificFinder,则将无法将其脱机到 Microsoft Office 2010 客户端。

如果存在多个特定的查找器,则 Creator 视图应等于至少一个特定的查找器视图,或是它的子集。

如上所述,Creator 视图必须等于至少一个特定的查找器视图(可能包含只读字段),或是它的子集。这是因为在外部列表中,用于创建项的 Business Connectivity Services 自动生成的表单是基于SpecificFinder 视图的。如果 Creator 视图具有额外字段,则这些字段将无法在自动生成的表单上显示,并会导致"创建"操作出现问题。为了避免这一点,Business Connectivity Services 将对此依赖关系进行检查,一旦 Creator 视图大于 SpecificFinder 视图,则会在外部列表上禁用"创建"操作。

如果 Creator 视图是 SpecificFinder 视图的子集,则 Business Connectivity Services 允许在外部列表上使用"创建"操作来创建项。但是对于脱机方案(例如 Microsoft Outlook),则需要 Updater 方法,这是因为 Business Connectivity Services 在调用 Create 方法之后将立即调用 Updater方法(用于更新 Creator 视图中未包含的字段)。

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

表 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 禁用脱机创建操作。

请确保正确地处理异常。一旦外部系统上的创建操作失败,则将引发表 2 中所列出的异常。

表 2. 异常

异常名称

在以下情况下使用此异常

AccessDeniedException

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

PartialCreateException

在少数外部系统上,有些情况下必须使用少数字段来创建一个新项,然后更新其余的字段。在创建该项并返回 ID 时,若没有正确设置字段值,则会引发此异常以优化错误处理。

运行时异常

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

备注

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

示例

代码段:实现 Creator

请参阅

概念

XML 代码段:为 Creator 方法建模

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