Condividi tramite


Authoring Step 8: Define the LineItem External ContentType

Applies to: SharePoint Server 2010

In this step, you will define an external content type named LineItem. The LineItem external content type demonstrates that you can have associations of type A->B->C; here, Customer and Region -> Order -> LineItem. The GetLineItemsForOrder method is the association method. Another concept we demonstrate is an external content type with multiple identifiers (a composite key): OrderID and ProductID.

Prerequisites

Authoring Step 7: Define the Order External ContentType

To define the LineItem external content type

  • Add the XML for the LineItem external contenttype after the Order entity element. This XML defines the entity’s title, identifiers, and methods to return LineItems.

    <Entity Namespace="SampleWebService" Version="1.0.0.0" 
            EstimatedInstanceCount="10000" Name="WSLineItem" 
            DefaultDisplayName="WSLineItem">
      <Identifiers>
        <Identifier TypeName="System.String" Name="OrderID" />
        <Identifier TypeName="System.String" Name="ProductID" />
      </Identifiers>
      <Methods>
        <Method IsStatic="false" Name="GetLineItemByID">
          <Parameters>
            <Parameter Direction="In" Name="ordid">
              <TypeDescriptor TypeName="System.String" 
                              IdentifierName="OrderID" Name="ordid" 
                              DefaultDisplayName="OrderID" />
            </Parameter>
            <Parameter Direction="In" Name="prodid">
              <TypeDescriptor TypeName="System.String" 
                              IdentifierName="ProductID" Name="prodid" 
                              DefaultDisplayName="ProductID" />
            </Parameter>
            <Parameter Direction="Return" Name="GetLineItemByID">
              <TypeDescriptor TypeName="BCSServiceProxy.LineItem, 
                              http://air-mail/WSOrders2010/service.asmx?wsdl" 
                              Name="GetLineItemByID">
                <TypeDescriptors>
                  <TypeDescriptor TypeName="System.String" ReadOnly="true" 
                                  IdentifierName="OrderID" Name="OrderID" />
                  <TypeDescriptor TypeName="System.String" ReadOnly="true" 
                                  IdentifierName="ProductID" Name="ProductID" />
                  <TypeDescriptor TypeName="System.String" Name="ProductName" />
                  <TypeDescriptor TypeName="System.Int32" Name="OrderQty" />
                  <TypeDescriptor TypeName="System.Decimal" Name="UnitPrice">
                    <Properties>
                      <Property Name="Decimal Digits" 
                                Type="System.Int32">4</Property>
                    </Properties>
                  </TypeDescriptor>
                  <TypeDescriptor TypeName="System.Decimal" Name="LineTotal">
                    <Properties>
                      <Property Name="Decimal Digits" 
                                Type="System.Int32">4</Property>
                    </Properties>
                  </TypeDescriptor>
                </TypeDescriptors>
              </TypeDescriptor>
            </Parameter>
          </Parameters>
          <MethodInstances>
            <MethodInstance Type="SpecificFinder" 
                            ReturnParameterName="GetLineItemByID" Default="true" 
                            Name="GetLineItemByID" 
                            DefaultDisplayName="Read Item WSLineItem">
              <Properties>
                <Property Name="LastDesignedOfficeItemType" 
                          Type="System.String">None</Property>
              </Properties>
            </MethodInstance>
          </MethodInstances>
        </Method>
        <Method IsStatic="false" Name="GetLineItems">
          <Parameters>
            <Parameter Direction="Return" Name="GetLineItems">
              <TypeDescriptor TypeName="BCSServiceProxy.LineItem[], 
                              http://air-mail/WSOrders2010/service.asmx?wsdl" 
                              IsCollection="true" Name="GetLineItems">
                <TypeDescriptors>
                  <TypeDescriptor TypeName="BCSServiceProxy.LineItem, 
                                  http://air-mail/WSOrders2010/service.asmx?wsdl" 
                                  Name="GetLineItemsElement">
                    <TypeDescriptors>
                      <TypeDescriptor TypeName="System.String" ReadOnly="true" 
                                      IdentifierName="OrderID" Name="OrderID" />
                      <TypeDescriptor TypeName="System.String" ReadOnly="true" 
                                      IdentifierName="ProductID" Name="ProductID" />
                      <TypeDescriptor TypeName="System.String" Name="ProductName">
                        <Properties>
                          <Property Name="ShowInPicker" 
                                    Type="System.Boolean">true</Property>
                        </Properties>
                      </TypeDescriptor>
                      <TypeDescriptor TypeName="System.Int32" Name="OrderQty" />
                      <TypeDescriptor TypeName="System.Decimal" Name="UnitPrice">
                        <Properties>
                          <Property Name="Decimal Digits" 
                                    Type="System.Int32">4</Property>
                        </Properties>
                      </TypeDescriptor>
                      <TypeDescriptor TypeName="System.Decimal" Name="LineTotal">
                        <Properties>
                          <Property Name="Decimal Digits" 
                                    Type="System.Int32">4</Property>
                        </Properties>
                      </TypeDescriptor>
                    </TypeDescriptors>
                  </TypeDescriptor>
                </TypeDescriptors>
              </TypeDescriptor>
            </Parameter>
          </Parameters>
          <MethodInstances>
            <MethodInstance Type="Finder" ReturnParameterName="GetLineItems" 
                            Default="true" Name="GetLineItems" 
                            DefaultDisplayName="WSLineItem Read List">
              <Properties>
                <Property Name="UseClientCachingForSearch" 
                          Type="System.String"></Property>
                <Property Name="RootFinder" Type="System.String"></Property>
              </Properties>
            </MethodInstance>
          </MethodInstances>
        </Method>
      </Methods>
    </Entity>