创作步骤 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")。

先决条件

创作步骤 3:定义 LobSystem 实例

定义 Address 外部内容类型

  1. 在 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>
    
  2. 保存 XML 文件。

后续步骤

创作步骤 5:定义 Customer 外部内容类型