创作步骤 4:定义 Address 外部内容类型
上次修改时间: 2010年4月16日
适用范围: SharePoint Server 2010
外部内容类型在其基本级别中包含一个标题(在 Properties 元素中定义)、一个唯一标识符(相当于一个主键),以及多个用于定义实体字段和指示 Business Data Connectivity (BDC) Service 如何从外部系统提取数据的方法。
在数据库中时,BDC 方法包含一个定义数据库查询的 Properties 元素、一个定义从查询返回的数据的 Parameters 元素和一个定义可用于调用此方法的不同方式的 MethodInstances 元素。不过,在 Web 服务中时,方法描述应调用以获取所需数据的 Web 方法。方法名称应与 Web 方法的名称匹配,并且 Parameters 元素定义从 Web 方法返回的数据;MethodInstances 元素定义可用于调用此方法的不同方式。所有名称和类型应与 Web 服务代理中的名称和类型匹配。
在此步骤中,将定义名为 Address 的外部内容类型。SampleWebService 代理中的 Address 实体演示一种方案,其中它可以接受不定义实体的标识符。这是因为我们只希望为客户显示地址列表,并且不希望搜索或显示唯一地址。没有标识符,BDC会将外部系统返回的地址视为数据 blob;无法对此外部内容类型运行操作,使用实体实例选取器,将地址与另一个外部内容类型关联,或者对外部数据进行搜索或爬网。
此外部内容类型演示的另一个重要概念是BDC对复杂格式的支持。可以使用复杂格式功能按照格式化的方式显示地址结构(例如,"Street, BlockNumber, City, State - PostalCode, Country")。
先决条件
定义 Address 外部内容类型
在 LobSystemInstances 元素之后添加 Address 外部内容类型的 XML。此 XML 定义外部内容类型的标题和要返回地址的方法。
备注
此处定义的 GetAddresses 方法是一个"虚拟";它不存在于 Web 服务中。在 XML 中定义此方法的唯一原因是 BDC 的当前限制需要所有实体都具有 Finder 方法。
<Entities> <Entity Namespace="SampleWebService" Version="1.1.0.0" EstimatedInstanceCount="10000" Name="WSAddress" DefaultDisplayName="WSAddress"> <Methods> <Method IsStatic="false" Name="GetAddresses"> <Parameters> <Parameter Direction="In" Name="id"> <TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" Name="id" DefaultDisplayName="CustomerID" /> </Parameter> <Parameter Direction="Return" Name="Addresses"> <TypeDescriptor TypeName="BCSServiceProxy.CustomerAddress[], http://air-mail/WSOrders2010/service.asmx?wsdl" IsCollection="true" Name="CustomerAddresses"> <TypeDescriptors> <TypeDescriptor TypeName="BCSServiceProxy.CustomerAddress, http://air-mail/WSOrders2010/service.asmx?wsdl" Name="CustomerAddressesElement"> <Properties> <Property Name="ComplexFormatting" Type="System.String" /> <Property Name="FormatString" Type="System.String"> {0}, {1}, {2}, {3} - PostalCode, {4} </Property> </Properties> <TypeDescriptors> <TypeDescriptor TypeName="BCSServiceProxy.CustomerStreet, http://air-mail/WSOrders2010/service.asmx?wsdl" Name="Street"> <TypeDescriptors> <TypeDescriptor TypeName="System.String" Name="BlockNumber" /> <TypeDescriptor TypeName="System.String" Name="Street" /> </TypeDescriptors> </TypeDescriptor> <TypeDescriptor TypeName="System.String" Name="City" /> <TypeDescriptor TypeName="BCSServiceProxy.States, http://air-mail/WSOrders2010/service.asmx?wsdl" Name="StateProvince" /> <TypeDescriptor TypeName="System.String" Name="CountryRegion" /> <TypeDescriptor TypeName="System.String" Name="PostalCode" /> </TypeDescriptors> </TypeDescriptor> </TypeDescriptors> </TypeDescriptor> </Parameter> </Parameters> <MethodInstances> <Association Name="GetAddressesForCustomer" Type="AssociationNavigator" ReturnParameterName="Addresses" DefaultDisplayName="Customer Addresses Navigate Association"> <SourceEntity Namespace="SampleWebService" Name="WSCustomer" /> <DestinationEntity Namespace="SampleWebService" Name="WSAddress" /> </Association> </MethodInstances> </Method> </Methods> </Entity> </Entities>
保存 XML 文件。