Compartilhar via


Etapa 4 (opcional): Definir associações

Associações link relacionado entidades dentro de uma linha - de - sistema empresa (LOB). Por exemplo, um cliente é associado com um pedidos de vendas no sistema AdventureWorks como um cliente faz pedidos de venda. Há um one-to-many relationship entre clientes e pedidos de vendas. Uma associação Contém ponteiros para o pai e filho entidades bem como um ponteiro para o lógica corporativa que permite que um cliente para get a entidade filho da entidade pai. A passagem de uma associação é simplesmente um chamada de método no sistema de aplicativos LOB. Associações tornando mais fácil para que você crie mestre-aplicativos detalhes. Para obter mais detalhes sobre associações no Business Data Catalog, consulte Associação.

Este tópico mostra como definir uma associação entre clientes e pedidos de vendas no banco de dados de AdventureWorks2000. Localizar os pedidos de vendas de um cliente específico é um comum exigências corporativas. Definindo essa associação na Business Data Catalog permite que você localizar os pedidos de venda, fornecidos um ID. cliente Definir associações é um processo de duas etapas. Primeiro, definir o método na entidade do cliente que irá retornar os pedidos de vendas, fornecido um ID. cliente Em segundo lugar, defina uma associação entre as duas entidades, do cliente e SalesOrder, especificando o método definido na entidade do cliente.

Dica

Este é um exemplo simples de um - origem, uma - entidade destino.Se você tiver múltiplo entidades origem e destino apenas uma entidade, você poderia esperar definir a lógica associação na entidade de destino.No entanto, o Business Data Catalog permite definir a lógica associação em qualquer entidade na mesma instância LobSystem LobSystem.

Pré-requisitos

Etapa 2: Definir entidades, métodos e filtros e se necessário, Etapa 3 (opcional): definir ações

Para definir uma associação

  1. Abra o arquivo AdventureWorks2000.xml no passo 2 ou 3 etapa.

  2. Add the following XML within the <Entities> tag, after the Product entity definition. Esta XML define as entidades SalesOrder e do cliente. Observe que a entidade do cliente também contém uma definição de um método chamado GetSalesOrdersForCustomer() que retorna as ordens de venda, fornecidos um ID. cliente Este é o método associação.

    <Entity EstimatedInstanceCount="10000" name="SalesOrder">
          <LocalizedDisplayNames>
            <LocalizedDisplayName LCID="1033">Sales Order</LocalizedDisplayName>
          </LocalizedDisplayNames>
          <Identifiers>
            <Identifier name="SalesOrderID" Typename="System.Int32" />
          </Identifiers>
          <Methods>
            <Method name="GetSalesOrders">
              <Properties>
                <Property name="RdbCommandText" Type="System.String">
                  SELECT SalesOrderID, OrderDate, SubTotal, IndividualID
                  FROM SalesOrderHeader, Individual WHERE (SalesOrderID &gt;= @MinSalesOrderID)
                  AND (SalesOrderID &lt;= @MaxSalesOrderID) AND (SalesOrderNumber LIKE @SalesOrderNumber)
                  AND SalesOrderHeader.CustomerID = Individual.CustomerID
                </Property>
                <Property name="RdbCommandType" Type="System.String">Text</Property>
              </Properties>
              <FilterDescriptors>
                <FilterDescriptor Type="Comparison" name="ID" >
                  <Properties>
                    <Property name="Comparator" Type="System.String">Equals</Property>
                  </Properties>
                </FilterDescriptor>
                <FilterDescriptor Type="Wildcard" name="SalesOrderNumber" />
              </FilterDescriptors>
              <Parameters>
                <Parameter Direction="In"  name="@MinSalesOrderID">
                  <TypeDescriptor Typename="System.Int32" Identifiername="SalesOrderID" 
                                  AssociatedFilter="ID" name="MinSalesOrderID">
                    <DefaultValues>
                      <DefaultValue MethodInstancename="SalesOrderFinderInstance" Type="System.Int32">0</DefaultValue>
                    </DefaultValues>
                  </TypeDescriptor>
                </Parameter>
                <Parameter Direction="In"  name="@MaxSalesOrderID">
                  <TypeDescriptor Typename="System.Int32" Identifiername="SalesOrderID" AssociatedFilter="ID" name="MaxSalesOrderID">
                    <DefaultValues>
                      <DefaultValue MethodInstancename="SalesOrderFinderInstance" Type="System.Int32">99999999</DefaultValue>
                    </DefaultValues>
                  </TypeDescriptor>
                </Parameter>
                <Parameter Direction="In"  name="@SalesOrderNumber">
                  <TypeDescriptor Typename="System.String" AssociatedFilter="SalesOrderNumber" name="SalesOrderNumber">
                    <DefaultValues>
                      <DefaultValue MethodInstancename="SalesOrderFinderInstance" Type="System.String">%</DefaultValue>
                      <DefaultValue MethodInstancename="SalesOrderSpecificFinderInstance" Type="System.String">%</DefaultValue>
                    </DefaultValues>
                  </TypeDescriptor>
                </Parameter>
                <Parameter Direction="Return"  name="SalesOrders">
                  <TypeDescriptor Typename="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" name="SalesOrderDataReader">
                    <TypeDescriptors>
                      <TypeDescriptor Typename="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="SalesOrderDataRecord">
                        <TypeDescriptors>
                          <TypeDescriptor Typename="System.Int32" Identifiername="SalesOrderID" name="SalesOrderID">
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">ID</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                          </TypeDescriptor>
                          <TypeDescriptor Typename="System.DateTime" name="OrderDate">
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">Order Date</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                            <Properties>
                              <Property name="DisplayByDefault" Type="System.Boolean">true</Property>
                            </Properties>
                          </TypeDescriptor>
                          <TypeDescriptor Typename="System.Int32" name="IndividualID">
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">IndividualID</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                            <Properties>
                              <Property name="DisplayByDefault" Type="System.Boolean">true</Property>
                            </Properties>
                          </TypeDescriptor>
                          <TypeDescriptor Typename="System.Decimal" name="SubTotal">
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">SubTotal</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                            <Properties>
                              <Property name="DisplayByDefault" Type="System.Boolean">true</Property>
                            </Properties>
                          </TypeDescriptor>
                        </TypeDescriptors>
                      </TypeDescriptor>
                    </TypeDescriptors>
                  </TypeDescriptor>
                </Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance name="SalesOrderFinderInstance" Type="Finder" ReturnParametername="SalesOrders" />
                <MethodInstance name="SalesOrderSpecificFinderInstance" Type="SpecificFinder" ReturnParametername="SalesOrders" />
              </MethodInstances>
            </Method>
          </Methods>
        </Entity>
        <Entity EstimatedInstanceCount="10000" name="Customer">
          <Properties>
            <Property name="Title" Type="System.String">FirstName</Property>
          </Properties>
          <Identifiers>
            <Identifier name="IndividualID" Typename="System.Int32" />
          </Identifiers>
          <Methods>
            <Method name="GetCustomers">
              <Properties>
                <Property name="RdbCommandText" Type="System.String">SELECT * FROM Individual WHERE (IndividualID &gt;= @MinIndividualID) AND (IndividualID &lt;= @MaxIndividualID) AND ((FirstName+' '+LastName) LIKE @Name)</Property>
                <Property name="RdbCommandType" Type="System.String">Text</Property>
              </Properties>
              <FilterDescriptors>
                <FilterDescriptor Type="Comparison" name="ID" >
                  <Properties>
                    <Property name="Comparator" Type="System.String">Equals</Property>
                  </Properties>
                </FilterDescriptor>
                <FilterDescriptor Type="Wildcard" name="Name" />
              </FilterDescriptors>
              <Parameters>
                <Parameter Direction="In"  name="@MinIndividualID">
                  <TypeDescriptor Typename="System.Int32" Identifiername="IndividualID" AssociatedFilter="ID" name="MinIndividualID">
                    <DefaultValues>
                      <DefaultValue MethodInstancename="CustomerFinderInstance" Type="System.Int32">0</DefaultValue>
                    </DefaultValues>
                  </TypeDescriptor>
                </Parameter>
                <Parameter Direction="In"  name="@MaxIndividualID">
                  <TypeDescriptor Typename="System.Int32" Identifiername="IndividualID" AssociatedFilter="ID" name="MaxIndividualID">
                    <DefaultValues>
                      <DefaultValue MethodInstancename="CustomerFinderInstance" Type="System.Int32">99999999</DefaultValue>
                    </DefaultValues>
                  </TypeDescriptor>
                </Parameter>
                <Parameter Direction="In"  name="@Name">
                  <TypeDescriptor Typename="System.String" AssociatedFilter="Name" name="Name">
                    <DefaultValues>
                      <DefaultValue MethodInstancename="CustomerFinderInstance" Type="System.String">%</DefaultValue>
                      <DefaultValue MethodInstancename="CustomerSpecificFinderInstance" Type="System.String">%</DefaultValue>
                    </DefaultValues>
                  </TypeDescriptor>
                </Parameter>
                <Parameter Direction="Return"  name="Customers">
                  <TypeDescriptor Typename="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" name="CustomerDataReader">
                    <TypeDescriptors>
                      <TypeDescriptor Typename="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="CustomerDataRecord">
                        <TypeDescriptors>
                          <TypeDescriptor Typename="System.Int32" Identifiername="IndividualID" name="IndividualID">
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">ID</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                          </TypeDescriptor>
                          <TypeDescriptor Typename="System.String" name="FirstName">
                            <Properties>
                              <Property name="DisplayByDefault" Type="System.Boolean">true</Property>
                            </Properties>
                          </TypeDescriptor>
                          <TypeDescriptor Typename="System.String" name="LastName">
                            <Properties>
                              <Property name="DisplayByDefault" Type="System.Boolean">true</Property>
                            </Properties>
                          </TypeDescriptor>
                        </TypeDescriptors>
                      </TypeDescriptor>
                    </TypeDescriptors>
                  </TypeDescriptor>
                </Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance name="CustomerFinderInstance" Type="Finder" ReturnParametername="Customers" />
                <MethodInstance name="CustomerSpecificFinderInstance" Type="SpecificFinder" ReturnParametername="Customers" />
              </MethodInstances>
            </Method>
            <Method name="GetSalesOrdersForCustomer">
              <Properties>
                <Property name="RdbCommandText" Type="System.String">SELECT SalesOrderID, OrderDate, SubTotal,Individual.IndividualID FROM SalesOrderHeader,Individual WHERE SalesOrderHeader.CustomerID=Individual.CustomerID and Individual.IndividualID=@IndividualID</Property>
                <Property name="RdbCommandType" Type="System.String">Text</Property>
              </Properties>
              <Parameters>
                <Parameter Direction="In"  name="@IndividualID">
                  <TypeDescriptor Typename="System.Int32" Identifiername="IndividualID" name="IndividualID" />
                </Parameter>
                <Parameter Direction="Return"  name="SalesOrders">
                  <TypeDescriptor Typename="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" name="SalesOrderDataReader">
                    <TypeDescriptors>
                      <TypeDescriptor Typename="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="SalesOrderDataRecord">
                        <TypeDescriptors>
                          <TypeDescriptor Typename="System.Int32" IdentifierEntityname="SalesOrder" Identifiername="SalesOrderID" name="SalesOrderID">
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">ID</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                          </TypeDescriptor>
                          <TypeDescriptor Typename="System.DateTime" name="OrderDate">
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">Order Date</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                            <Properties>
                              <Property name="DisplayByDefault" Type="System.Boolean">true</Property>
                            </Properties>
                          </TypeDescriptor>
                          <TypeDescriptor Typename="System.Int32" name="IndividualID">
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">IndividualID</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                            <Properties>
                              <Property name="DisplayByDefault" Type="System.Boolean">true</Property>
                            </Properties>
                          </TypeDescriptor>
                          <TypeDescriptor Typename="System.Decimal" name="SubTotal">
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">SubTotal</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                            <Properties>
                              <Property name="DisplayByDefault" Type="System.Boolean">true</Property>
                            </Properties>
                          </TypeDescriptor>
                        </TypeDescriptors>
                      </TypeDescriptor>
                    </TypeDescriptors>
                  </TypeDescriptor>
                </Parameter>
              </Parameters>
            </Method>
          </Methods>
          <Actions>
            <Action name="Send Email" Position="1" IsOpenedInNewWindow="true" Url="mailto:{0}.msn.com" ImageUrl="">
              <ActionParameters>
                <ActionParameter name="FirstName" Index="0" />
              </ActionParameters>
            </Action>
          </Actions>
        </Entity>
    
  3. Add the following XML after the <Entities> tag to define the association between the Customer and SalesOrder entities:

      <Associations>
        <Association AssociationMethodEntityname="Customer" AssociationMethodname="GetSalesOrdersForCustomer" AssociationMethodReturnParametername="SalesOrders" name="CustomerToSalesOrder" IsCached="true">
          <!-- Associations are just subclasses of MethodInstances. 
          They can also take ReturnTypeDescriptorName optionally. For 
          details, see SampleWebServiceMetadata.-->
          <SourceEntity name="Customer" />
          <DestinationEntity name="SalesOrder" />
          <!-- The source and destination entities can be the same. 
          For more information, see the SampleWebService example.-->
        </Association>
      </Associations>
    
  4. Salve o arquivo XML.

  5. Antes de adicionar o definição de aplicativo novamente, você deve excluir o aplicativo AdventureWorksSample que você criou na Step 1 a partir de Business Data Catalog. Para excluir AdventureWorksSample, execute essas etapas:

    1. Abrir SharePoint 3.0 Central Administration SharePoint 3.0 da Administração Central .

    2. No painel de navegação à esquerda, clique o nome do seu do provedor de serviços compartilhados (SSP) .

    3. O Business Data Catalog Business Data Catalog seção, clique em View Applications para exibição os aplicativos registrados.

    4. Clique em AdventureWorksSample para aberto o View Application: AdventureWorksSample página.

    5. Finalmente, clique Delete Application no Application Settings Application Settings seção.

  6. Agora, adicionar o definição de aplicativo para o Business Data Catalog. Para obter detalhes, consulte Como a: Adicionar uma definição de aplicativo para o Catálogo de dados comercial.

  7. Teste os metadados, criando uma lista de dados Business e uma Web Part de associação. Para obter detalhes, consulte Como a: testar uma associação de dados do Business.

Próxima etapas

Etapa 5 (opcional): definir métodos IDEnumerator e pesquisa dados Business ativar

Consulte também

Outros recursos

Modelo de Metadados Catálogo de dados comerciais:
Exemplo SQL Server 2000 AdventureWorks