作成手順 5: Customer 外部コンテンツ タイプを定義する

最終更新日: 2010年4月16日

適用対象: SharePoint Server 2010

この手順では、Customer という名前の外部コンテンツ タイプを定義します。通常の Finder メソッドと SpecificFinder メソッドに加え、Customer 外部コンテンツ タイプは、また、外部システムでの、作成 (Create)、読み取り (Read)、更新 (Update)、および削除 (Delete) をする CRUD 操作を可能にする Creator、Updater、および Deleter メソッドを定義します。

SpecificFinder メソッドとして使用される Web メソッド GetCustomerByID も、CustomerID によってアドレスを取得するための関連付けメソッドとして再利用されます。GetCustomerByID Web メソッドは、関連付けによって顧客のアドレスを取得するために使用される、戻り構造体のアドレスのコレクションを格納します。これは、関連付けメソッドとして別のメソッドを用意する必要が常にあるわけではないことを示します。関連付けメソッドとして、戻り構造体全部、または別のメソッド インスタンスの戻り構造体の一部 (ここでは SpecificFinder) を再利用できます。

Customer エンティティは、自己参照型エンティティの関連付け概念も示します。顧客は、子顧客を持つことができます。BDC では、これは関連付けを使用して実装されます。CustomerID を指定して顧客を返すには、GetChildCustomersForCustomer Web メソッドを使用します。

Customer 外部コンテンツ タイプでは、以下の関連付けが定義されています。

CustomerToChildCustomers (Association メソッド Customer 外部コンテンツ タイプで定義された GetChildCustomersForCustomer)

CustomerToAddress (Association メソッド Customer 外部コンテンツ タイプで定義された GetAddressesForCustomer)

前提条件

作成手順 4: Address 外部コンテンツ タイプを定義する

Customer エンティティを定義するには

  • Customer エンティティの XML を、Address エンティティ要素の後で、Entities 終了タグ (</Entities>) の前に追加します。

    <Entity Namespace="SampleWebService" 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.String" Name="CustomerID" />
      </Identifiers>
      <Methods>
        <Method IsStatic="false" Name="GetCustomerByID">
          <Parameters>
            <Parameter Direction="In" Name="id">
              <TypeDescriptor TypeName="System.String" 
                              IdentifierName="CustomerID" Name="id" 
                              DefaultDisplayName="CustomerID" />
            </Parameter>
            <Parameter Direction="Return" Name="GetCustomerByID">
              <TypeDescriptor 
                TypeName="BCSServiceProxy.Customer, http://air-mail/WSOrders2010/service.asmx?wsdl" 
                Name="GetCustomerByID">
                <TypeDescriptors>
                  <TypeDescriptor TypeName="System.String" ReadOnly="true" 
                                  IdentifierName="CustomerID" Name="CustomerID" />
                  <TypeDescriptor TypeName="System.String" Name="Name">
                    <Properties>
                      <Property Name="OfficeProperty" 
                                Type="System.String">FullName</Property>
                    </Properties>
                  </TypeDescriptor>
                  <TypeDescriptor 
                    TypeName="System.Nullable`1[[System.Int64, mscorlib, 
                    Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], 
                    mscorlib, Version=2.0.0.0, Culture=neutral, 
                    PublicKeyToken=b77a5c561934e089" Name="WorkPhoneNumber" />
                  <TypeDescriptor TypeName="System.Nullable`1[[System.Int64, mscorlib, 
                                  Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089]], mscorlib, 
                                  Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089" 
                                  Name="MobilePhoneNumber" />
                  <TypeDescriptor TypeName="System.String" Name="Industry" />
                  <TypeDescriptor TypeName="System.String" Name="WebSite" />
                  <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">
                        <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>
                  <TypeDescriptor TypeName="System.String" Name="ParentCustomerID" />
                  <TypeDescriptor TypeName="System.Int32" Name="Version" />
                  <TypeDescriptor TypeName="System.DateTime" Name="ModifiedDate">
                    <Interpretation>
                      <NormalizeDateTime LobDateTimeMode="UTC" />
                    </Interpretation>
                  </TypeDescriptor>
                  <TypeDescriptor TypeName="System.Boolean" Name="IsDeleted" />
                </TypeDescriptors>
              </TypeDescriptor>
            </Parameter>
          </Parameters>
          <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>
            <Association Name="CustomerToAddresses" Type="AssociationNavigator" 
                         ReturnParameterName="GetCustomerByID" 
                         ReturnTypeDescriptorPath="GetCustomerByID.CustomerAddresses"
                         DefaultDisplayName="Customer Child Customers Navigate Association">
              <SourceEntity Namespace="SampleWebService" Name="WSCustomer" />
              <DestinationEntity Namespace="SampleWebService" Name="WSAddress" />
            </Association>
          </MethodInstances>
        </Method>
        <Method IsStatic="false" Name="GetCustomers">
          <FilterDescriptors>
            <FilterDescriptor Type="Wildcard" FilterField="Name" Name="Filter">
              <Properties>
                <Property Name="UsedForDisambiguation" Type="System.Boolean">false</Property>
                <Property Name="IsDefault" Type="System.Boolean">false</Property>
                <Property Name="CaseSensitive" Type="System.Boolean">false</Property>
              </Properties>
            </FilterDescriptor>
          </FilterDescriptors>
          <Parameters>
            <Parameter Direction="In" Name="name">
              <TypeDescriptor TypeName="System.String" AssociatedFilter="Filter" Name="name" />
            </Parameter>
            <Parameter Direction="In" Name="limit">
              <TypeDescriptor TypeName="System.Nullable`1[[System.Int32, mscorlib, 
                              Version=2.0.0.0, Culture=neutral, 
                              PublicKeyToken=b77a5c561934e089]], mscorlib, 
                              Version=2.0.0.0, Culture=neutral, 
                              PublicKeyToken=b77a5c561934e089" Name="limit" />
            </Parameter>
            <Parameter Direction="Return" Name="GetCustomers">
              <TypeDescriptor TypeName="BCSServiceProxy.Customer[], 
                              http://air-mail/WSOrders2010/service.asmx?wsdl" 
                              IsCollection="true" Name="GetCustomers">
                <TypeDescriptors>
                  <TypeDescriptor TypeName="BCSServiceProxy.Customer, 
                                  http://air-mail/WSOrders2010/service.asmx?wsdl" 
                                  Name="GetCustomersElement">
                    <TypeDescriptors>
                      <TypeDescriptor TypeName="System.String" ReadOnly="true" 
                                      IdentifierName="CustomerID" Name="CustomerID" />
                      <TypeDescriptor TypeName="System.String" Name="Name">
                        <Properties>
                          <Property Name="ShowInPicker" Type="System.Boolean">true</Property>
                        </Properties>
                      </TypeDescriptor>
                      <TypeDescriptor TypeName="System.Nullable`1[[System.Int64, 
                                      mscorlib, Version=2.0.0.0, Culture=neutral, 
                                      PublicKeyToken=b77a5c561934e089]], mscorlib, 
                                      Version=2.0.0.0, Culture=neutral, 
                                      PublicKeyToken=b77a5c561934e089" Name="WorkPhoneNumber" />
                      <TypeDescriptor TypeName="System.Nullable`1[[System.Int64, 
                                      mscorlib, Version=2.0.0.0, Culture=neutral, 
                                      PublicKeyToken=b77a5c561934e089]], mscorlib, 
                                      Version=2.0.0.0, Culture=neutral, 
                                      PublicKeyToken=b77a5c561934e089" Name="MobilePhoneNumber" />
                      <TypeDescriptor TypeName="System.String" Name="Industry" />
                      <TypeDescriptor TypeName="System.String" Name="WebSite" />
                      <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">
                            <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>
                      <TypeDescriptor TypeName="System.String" Name="ParentCustomerID" />
                      <TypeDescriptor TypeName="System.Int32" Name="Version" />
                      <TypeDescriptor TypeName="System.DateTime" Name="ModifiedDate">
                        <Interpretation>
                          <NormalizeDateTime LobDateTimeMode="UTC" />
                        </Interpretation>
                      </TypeDescriptor>
                      <TypeDescriptor TypeName="System.Boolean" Name="IsDeleted" />
                    </TypeDescriptors>
                  </TypeDescriptor>
                </TypeDescriptors>
              </TypeDescriptor>
            </Parameter>
          </Parameters>
          <MethodInstances>
            <MethodInstance Type="Finder" ReturnParameterName="GetCustomers" Default="true" 
                            Name="GetCustomers" DefaultDisplayName="WSCustomer Read List">
              <Properties>
                <Property Name="UseClientCachingForSearch" Type="System.String"></Property>
                <Property Name="RootFinder" Type="System.String"></Property>
              </Properties>
            </MethodInstance>
          </MethodInstances>
        </Method>
        <Method IsStatic="false" Name="CreateCustomer">
          <Parameters>
            <Parameter Direction="In" Name="customer">
              <TypeDescriptor TypeName="BCSServiceProxy.Customer, 
                              http://air-mail/WSOrders2010/service.asmx?wsdl" 
                              Name="customer">
                <TypeDescriptors>
                  <TypeDescriptor TypeName="System.String" CreatorField="true" 
                                  IdentifierName="CustomerID" Name="CustomerID" />
                  <TypeDescriptor TypeName="System.String" CreatorField="true" 
                                  Name="Name" />
                  <TypeDescriptor TypeName="System.Nullable`1[[System.Int64, mscorlib, 
                                  Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089]], 
                                  mscorlib, Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089" 
                                  CreatorField="true" Name="WorkPhoneNumber" />
                  <TypeDescriptor TypeName="System.Nullable`1[[System.Int64, mscorlib, 
                                  Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089]], 
                                  mscorlib, Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089" CreatorField="true" 
                                  Name="MobilePhoneNumber" />
                  <TypeDescriptor TypeName="System.String" CreatorField="true" 
                                  Name="Industry" />
                  <TypeDescriptor TypeName="System.String" CreatorField="true" 
                                  Name="WebSite" />
                  <TypeDescriptor TypeName="BCSServiceProxy.CustomerAddress[], 
                                  http://air-mail/WSOrders2010/service.asmx?wsdl" 
                                  IsCollection="true" CreatorField="true" 
                                  Name="CustomerAddresses">
                    <TypeDescriptors>
                      <TypeDescriptor TypeName="BCSServiceProxy.CustomerAddress, 
                                      http://air-mail/WSOrders2010/service.asmx?wsdl" 
                                      Name="CustomerAddressesElement">
                        <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>
                  <TypeDescriptor TypeName="System.String" CreatorField="true" 
                                  Name="ParentCustomerID" />
                  <TypeDescriptor TypeName="System.Int32" CreatorField="true" 
                                  Name="Version" />
                  <TypeDescriptor TypeName="System.DateTime" CreatorField="true" 
                                  Name="ModifiedDate">
                    <Interpretation>
                      <NormalizeDateTime LobDateTimeMode="UTC" />
                    </Interpretation>
                  </TypeDescriptor>
                  <TypeDescriptor TypeName="System.Boolean" CreatorField="true" 
                                  Name="IsDeleted" />
                </TypeDescriptors>
              </TypeDescriptor>
            </Parameter>
            <Parameter Direction="Return" Name="CreateCustomer">
              <TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" 
                              Name="CreateCustomer" />
            </Parameter>
          </Parameters>
          <MethodInstances>
            <MethodInstance Type="Creator" ReturnParameterName="CreateCustomer" 
                            Default="true" Name="CreateCustomer" 
                            DefaultDisplayName="Create WSCustomer">
            </MethodInstance>
          </MethodInstances>
        </Method>
        <Method IsStatic="false" Name="UpdateCustomer">
          <Parameters>
            <Parameter Direction="In" Name="customer">
              <TypeDescriptor TypeName="BCSServiceProxy.Customer, 
                              http://air-mail/WSOrders2010/service.asmx?wsdl" 
                              Name="customer">
                <TypeDescriptors>
                  <TypeDescriptor TypeName="System.String" UpdaterField="true" 
                                  IdentifierName="CustomerID" Name="CustomerID" />
                  <TypeDescriptor TypeName="System.String" UpdaterField="true" 
                                  Name="Name" />
                  <TypeDescriptor TypeName="System.Nullable`1[[System.Int64, mscorlib, 
                                  Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089]], 
                                  mscorlib, Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089" UpdaterField="true" 
                                  Name="WorkPhoneNumber" />
                  <TypeDescriptor TypeName="System.Nullable`1[[System.Int64, mscorlib, 
                                  Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089]], 
                                  mscorlib, Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089" 
                                  UpdaterField="true" Name="MobilePhoneNumber" />
                  <TypeDescriptor TypeName="System.String" UpdaterField="true" 
                                  Name="Industry" />
                  <TypeDescriptor TypeName="System.String" UpdaterField="true" 
                                  Name="WebSite" />
                  <TypeDescriptor TypeName="BCSServiceProxy.CustomerAddress[], 
                                  http://air-mail/WSOrders2010/service.asmx?wsdl" 
                                  IsCollection="true" UpdaterField="true" 
                                  Name="CustomerAddresses">
                    <TypeDescriptors>
                      <TypeDescriptor TypeName="BCSServiceProxy.CustomerAddress, 
                                      http://air-mail/WSOrders2010/service.asmx?wsdl" 
                                      Name="CustomerAddressesElement">
                        <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>
                  <TypeDescriptor TypeName="System.String" UpdaterField="true" 
                                  Name="ParentCustomerID" />
                  <TypeDescriptor TypeName="System.Int32" UpdaterField="true" 
                                  Name="Version" />
                  <TypeDescriptor TypeName="System.DateTime" UpdaterField="true" 
                                  Name="ModifiedDate">
                    <Interpretation>
                      <NormalizeDateTime LobDateTimeMode="UTC" />
                    </Interpretation>
                  </TypeDescriptor>
                  <TypeDescriptor TypeName="System.Boolean" UpdaterField="true" 
                                  Name="IsDeleted" />
                </TypeDescriptors>
              </TypeDescriptor>
            </Parameter>
          </Parameters>
          <MethodInstances>
            <MethodInstance Type="Updater" Name="UpdateCustomer" 
                            DefaultDisplayName="Update WSCustomer">
            </MethodInstance>
          </MethodInstances>
        </Method>
        <Method IsStatic="false" Name="DeleteCustomer">
          <Parameters>
            <Parameter Direction="In" Name="id">
              <TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" 
                              Name="id" />
            </Parameter>
          </Parameters>
          <MethodInstances>
            <MethodInstance Type="Deleter" Name="DeleteCustomer" 
                            DefaultDisplayName="Delete WSCustomer">
            </MethodInstance>
          </MethodInstances>
        </Method>
        <Method IsStatic="false" Name="GetChildCustomersForCustomer">
          <Parameters>
            <Parameter Direction="In" Name="id">
              <TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" 
                              Name="id" DefaultDisplayName="CustomerID" />
            </Parameter>
            <Parameter Direction="Return" Name="Customers">
              <TypeDescriptor TypeName="BCSServiceProxy.Customer, 
                              http://air-mail/WSOrders2010/service.asmx?wsdl" 
                              Name="ArrayOfCustomers">
                <TypeDescriptors>
                  <TypeDescriptor TypeName="System.String" ReadOnly="true" 
                                  IdentifierName="CustomerID" Name="CustomerID" />
                  <TypeDescriptor TypeName="System.String" Name="Name" />
                  <TypeDescriptor TypeName="System.Nullable`1[[System.Int64, mscorlib, 
                                  Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089]], 
                                  mscorlib, Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089" 
                                  Name="WorkPhoneNumber" />
                  <TypeDescriptor TypeName="System.Nullable`1[[System.Int64, mscorlib, 
                                  Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089]], 
                                  mscorlib, Version=2.0.0.0, Culture=neutral, 
                                  PublicKeyToken=b77a5c561934e089" 
                                  Name="MobilePhoneNumber" />
                  <TypeDescriptor TypeName="System.String" Name="Industry" />
                  <TypeDescriptor TypeName="System.String" Name="WebSite" />
                </TypeDescriptors>
              </TypeDescriptor>
            </Parameter>
          </Parameters>
          <MethodInstances>
            <Association Name="CustomerToChildCustomers" Type="AssociationNavigator" 
                         ReturnParameterName="Customers" 
                         DefaultDisplayName="Customer Child Customers Navigate Association">
              <SourceEntity Namespace="SampleWebService" Name="WSCustomer" />
              <DestinationEntity Namespace="SampleWebService" Name="WSCustomer" />
            </Association>
          </MethodInstances>
        </Method>
      </Methods>
    </Entity>
    

次の手順

作成手順 6: Region エンティティを定義する