示例 BDC 模型

上次修改时间: 2010年4月15日

适用范围: SharePoint Server 2010

下面的示例 BDC 模型表示 Web 服务类型的外部系统的"客户"外部内容类型。使用 SharePoint 2010 SDK 附带的示例 AdventureWorks Web 服务的示例显示:

  • 使用一个 Method 对象添加简单外部内容类型 WSCustomer

  • 添加 MethodInstance 对象以使 Method 可在运行时执行

  • 将两个外部内容类型"客户"和"订单"相关联

示例:使用一个 Method 对象添加简单实体

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://schemas.microsoft.com/windows/2007/BusinessDataCatalog BDCMetadata.xsd" Name="AdventureWorksWSModel" IsCached="false" xmlns="https://schemas.microsoft.com/windows/2007/BusinessDataCatalog">
   <LobSystems>
    <LobSystem Type="Wcf" Name="AdventureWorksWS">
      <Properties>
        <Property Name="WsdlFetchAuthenticationMode" Type="System.String">PassThrough</Property>
        <Property Name="WcfMexDiscoMode" Type="System.String">Disco</Property>
        <Property Name="WcfMexDocumentUrl" Type="System.String">http://webserver:90/webservice.asmx?wsdl</Property>
        <Property Name="WcfProxyNamespace" Type="System.String">BCSServiceProxy</Property>
        <Property Name="WildcardCharacter" Type="System.String">*</Property>
      </Properties>
      <LobSystemInstances>
        <LobSystemInstance Name="AdventureWorksWS">
          <Properties>
            <Property Name="WcfAuthenticationMode" Type="System.String">PassThrough</Property>
            <Property Name="WcfEndpointAddress" Type="System.String">http://webserver:90/webservice.asmx</Property>
            <Property Name="ShowInSearchUI" Type="System.String"></Property>
          </Properties>
        </LobSystemInstance>
      </LobSystemInstances>
      <Entities>
        <Entity Namespace="AdventureWorks" Version="1.0.0.0" EstimatedInstanceCount="10000" Name="WSCustomer" DefaultDisplayName="WSCustomer">
          <Properties>
            <Property Name="OutlookItemType" Type="System.String">Contact</Property>
          </Properties>
          <Identifiers>
            <Identifier TypeName="System.Int32" Name="CustomerId" />
          </Identifiers>
          <Methods>
            <Method IsStatic="false" Name="GetCustomerById">
              <Parameters>
                <Parameter Direction="In" Name="customerId">
                  <TypeDescriptor TypeName="System.Int32" IdentifierName="CustomerId" Name="customerId" />
                </Parameter>
                <Parameter Direction="Return" Name="GetCustomerById">
                  <TypeDescriptor TypeName="BCSServiceProxy.SalesCustomer, AdventureWorksWS" Name="GetCustomerById">
                    <TypeDescriptors>
                      <TypeDescriptor TypeName="System.Int32" ReadOnly="true" IdentifierName="CustomerId" Name="CustomerId" />
                      <TypeDescriptor TypeName="System.String" Name="Title" />
                      <TypeDescriptor TypeName="System.String" Name="FirstName">
                        <Properties>
                          <Property Name="OfficeProperty" Type="System.String">FirstName</Property>
                        </Properties>
                      </TypeDescriptor>
                      <TypeDescriptor TypeName="System.String" Name="MiddleName" />
                      <TypeDescriptor TypeName="System.String" Name="LastName">
                        <Properties>
                          <Property Name="OfficeProperty" Type="System.String">LastName</Property>
                        </Properties>
                      </TypeDescriptor>
                      <TypeDescriptor TypeName="System.String" Name="EmailAddress" />
                      <TypeDescriptor TypeName="System.String" Name="Phone" />
                      <TypeDescriptor TypeName="System.DateTime" Name="ModifiedDate" />
                    </TypeDescriptors>
                  </TypeDescriptor>
                </Parameter>
              </Parameters>
              <MethodInstances>
                <!- See below>
              </MethodInstances>
            </Method>
          </Methods>
        </Entity>
      </Entities>
    </LobSystem>
  </LobSystems>
</Model>

示例:添加 MethodInstance 以使 Method 对象可在运行时执行

在前面的示例中,Method 无法在运行时执行。下面的代码示例演示您可以如何将 MethodInstance 添加到之前的"客户"实体以便使 Method 可执行。

<MethodInstances>
       <MethodInstance Type="SpecificFinder" ReturnParameterName="GetCustomerById" Default="true" Name="GetCustomerById" DefaultDisplayName="Read Item WSCustomer">
           <Properties>
             <Property Name="LastDesignedOfficeItemType" Type="System.String">Contact</Property>
           </Properties>
       </MethodInstance>
</MethodInstances>

Associating Two entities, Customer and Order

关联的类型为 MethodInstance。下面的代码示例演示如何将两个实体相关联。该示例假定另外存在一个名为"订单"的实体类型,它具有一个返回已在模型中定义的名为 'Orders 的参数。此处,该模型将"客户"和"订单"两个实体相关联。

<!—BDC has three types of association operations - AssociationNavigator, Associate and DisAssociate -->
<MethodInstances>
   <Association Name="GetOrdersByCustomer" Type="AssociationNavigator" ReturnParameterName="Orders">
<!—Name of the Source entity in the association -->
      <Source Name="Customer" Namespace="AdventureWorks">
      <!—Name of the destination entity in the association -->
<Destination Name="Order" Namespace=" AdventureWorks">
   </Association>
</MethodInstances>

备注

为了简便和完成此示例起见,没有为外部内容类型显示 LobSystem 和 LobSystemInstance 对象。

请参阅 BDCMetadata 架构查看 BDC 模型架构文档,并参阅 Business Connectivity Services:示例 XML 和代码示例了解更多示例。