上次修改时间: 2010年5月4日
适用范围: SharePoint Server 2010
本文内容
最常用的关联类型:一对多
关联和 BDC
SharePoint Designer 2010 中支持的关联
基于数据库与基于 Web 服务的外部内容类型关联比较
选择要在其上创建关联的外部内容类型
反向关联
在用户界面中查看关联
在实际方案中,您必须经常查找特定业务实体的相关或补充信息。例如,您可能希望查找有关客户概况的其他信息,如该客户提交的最新订单或该客户经常购买的五类产品。Microsoft Business Connectivity Services (BCS) 支持将两种外部内容类型关联起来,以便为此类方案提供支持。链接两个相关外部内容类型的概念称为关联。
最常用的关联类型:一对多
最常用的关联类型为一对多或大纲-细节关联。在经典的客户-订单示例中,当您定义某个关联时,Business Connectivity Services 可实现以下方案:
查看客户概况时,您可以看到该客户提交的订单(大纲-细节报告)。
浏览订单时,可以导航到提交订单的客户的详细信息。
创建订单时,您必须为订单分配一个客户,但是您要从可用及现有客户列表中进行选择,而不是在订单创建表单上猜测客户的主键(标识符)。选择客户之后,您希望看到该客户的名称而不是其主键。
在浏览订单时,您希望看到提交订单的客户的详细信息(反向查找)。
关联和 BDC
关联是 Business Data Connectivity (BDC) Service 中的方法实例。关联包含指向父外部内容类型和子外部内容类型的指针及指向能够使客户端从父外部内容类型获取子外部内容类型的业务逻辑(MethodInstance 对象)的指针。关联的通道是对外部系统的方法调用。
Association 方法实例包含适用于 SourceEntity 实例的标识符值的多个插槽,以及适用于 DestinationEntity 实例的标识符值的一个插槽。因此,您必须使用与每个外部内容类型(为 Association 方法中的 Association 中的源)的每个标识符相对应的标识符来标记足够的输入 TypeDescriptor 对象。输入 TypeDescriptor 对象上的 IdentifierName 属性指示 BDC 在执行方法之前插入关联的 EntityInstance 的标识符值。例如,在 AssociationMethodInstance 中,用户可能提供了想要检索的源 EntityInstance 的标识符值。BDC 在使用所有默认值对此参数进行完全实例化后,会将该值插入此插槽中。
在 BDC 模型中,如果目标外部内容类型属于包含 Association 方法实例的 LobSystem,则 Association 逻辑 (MethodInstance) 可位于任何外部内容类型(源或目标或未关联的内容类型)上。通过 Microsoft SharePoint Designer 2010 可以创建关联;但是,它要求在目标外部内容类型上定义关联。
BDC 也支持多个源外部内容类型方案及一个目标外部内容类型方案。SharePoint Designer 2010 不支持这种关联。
BDC 还支持无外键关联。无外键关联并不是一级关联。考虑使用可返回"Customer"的 Web 方法,并且"Customer"的一个字段是"Address of the Customer"的键。同时考虑另一 Web 方法,此方法在给定其键的情况下返回"Address"。您可将此方法用作 Customer-AddressAssociation 方法(可能带有"Address"的 SpecificFinder)。外键虚拟关联确定此方法的目标是"Address",从"Returned Customer"提取"Address"的键,然后调用此关联 Method 以自动返回"Address"。
警告 |
|---|
虽然 BDC 模型支持外键虚拟关联,但是 SharePoint Designer 2010 不支持外键虚拟关联。因此,无法使用 SharePoint Designer 为外键虚拟关联建模。 |
SharePoint Designer 2010 中支持的关联
可在 SharePoint Designer 2010外部内容类型设计器中创建的关联类型为一对多关联和自引用关联,它们是同一外部内容类型的相关实例。所有这些关联都基于外键。
若要创建不带外键的多对多关联或具有多个相关外部内容类型的关联,您必须使用 XML 编辑器或使用 Visual Studio 2010 手动设计它们。若要查看 Visual Studio 2010 中的外部内容类型设计器并查看有关如何创建关联的演示,请观看 Boris Scholl 的视频使用 VS 2010 中的 SharePoint 业务数据连接设计器(该链接可能指向英文页面)。
基于数据库与基于 Web 服务的外部内容类型关联比较
对于基于数据库的外部内容类型,应在表上创建关联,该表与用于创建其他操作的表相同。对于基于 Web 服务的外部内容类型,应在相应的 Web 方法上创建关联。有关详细信息,请参阅下列主题:
警告 |
|---|
您无法在数据库表上创建反向关联。若要了解详细信息,请参阅反向关联。 |
选择要在其上创建关联的外部内容类型
在准备好创建关联时,您应该已经创建了两个外部内容类型(带有相应的读取项目 和读取列表 操作)。利用 SharePoint Designer外部内容类型设计器,您可以声明方式创建关联,就像执行任何其他操作一样。在拥有到父外部内容类型的外键的外部内容类型上创建关联。例如,考虑客户提交多个订单的客户-订单场景。除其他字段(如"价格"、"数量"和"日期"之外),每个订单还有一个列出提交订单的客户的名称的字段。该字段为外键字段,并且由于此信息包含在订单中,因此您可在 SharePoint Designer 中打开订单外部内容类型,然后在其中创建关联。
对于基于数据库的外部内容类型,请右键单击在创建其他操作时所用的相同表格,然后在该表格上构建关联。有关详细信息,请参阅如何:在两个基于数据库表的外部内容类型之间添加关联。对于基于 Web 服务的外部内容类型,请右键单击为关联设计的方法。有关详细信息,请参阅如何:在两个基于 Web 服务的外部内容类型之间添加关联
反向关联
多数情况下,您必须拥有一个正向关联,以基于外键显示父项目(大纲)的相关项目(细节)。但是,有时您必须显示特定项目的大纲项目,例如显示特定订单所属的客户。为此,您必须创建反向关联。换句话说,SharePoint Designer 中的关联获取外部内容类型的多个项目,而反向关联获取相关外部内容类型的单个项目。
在用户界面中查看关联
创建两个外部内容类型之间的关联(请参阅如何:在两个基于数据库表的外部内容类型之间添加关联)之后,您可以在 SharePoint Designer 2010 的用户界面中和 SharePoint 网站的以下位置中查看这些关联:
**外部列表表单:**关联多数在外部列表表单中可见。例如,外部项选取器可用于选择订单的客户。现在您可从此表单的现有客户列表中选取客户。如果外部列表同步到 Outlook 或 SharePoint Workspace,选取器的丰富客户端版本会显示在表单上,您也可以用它来创建订单。
图 1. 外部项选取器
.gif)
在两种情况下,您均可以在客户选择显示比用于标识外部系统中客户的号码更有意义的内容时,在外部项选取器控件上显示友好的显示名称;例如,客户名称或在 SharePoint Designer 中标记为标题字段的任何字段。
**概况页面:**注意在定义关联后,客户订单在客户的概况页面上的显示方式。同样,在订单的概况页面中,如果定义了反向关联,则您可以使用它来导航并查看更多客户详细信息。
图 2. 客户概况页面上的订单
.gif)
**业务数据 Web 部件:**业务数据列表以及与业务数据相关的列表 Web 部件利用关联,可实现有意义的方案(如图 3 中显示的方案),在该图中,顶部的"业务数据列表"部分列出了一组客户,在选择客户后,会在"与业务数据相关的列表"部分显示相关订单。
图 3. 业务数据 Web 部件
.gif)
警告