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
Abra o arquivo AdventureWorks2000.xml no passo 2 ou 3 etapa.
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 >= @MinSalesOrderID) AND (SalesOrderID <= @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 >= @MinIndividualID) AND (IndividualID <= @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>
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>
Salve o arquivo XML.
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:
Abrir SharePoint 3.0 Central Administration SharePoint 3.0 da Administração Central .
No painel de navegação à esquerda, clique o nome do seu do provedor de serviços compartilhados (SSP) .
O Business Data Catalog Business Data Catalog seção, clique em View Applications para exibição os aplicativos registrados.
Clique em AdventureWorksSample para aberto o View Application: AdventureWorksSample página.
Finalmente, clique Delete Application no Application Settings Application Settings seção.
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.
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