SampleWebService メタデータ
このトピックには、サンプル Web サービスの完全な XML メタデータが含まれています。それはビジネス データ カタログの Web サービスに関連する複雑な概念を示しています。このサンプルを理解するには、ウォークスルーの手順を実行し、SampleWebService メタデータ XML のコメントを確認してください。
SampleWebService Web サービスのソースも、SharePoint Server 2007 SDK: ソフトウェア開発キットおよびエンタープライズ コンテンツ管理スタータ キットに含まれています。メタデータは、インポートする前に Web サーバーに発行し、WSDLFetchURL プロパティを更新してください。
メタデータ
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- This XML defines the metadata for the SampleWebService Web
service defined in the SDK. This demonstrates several complex concepts
related to metadata authoring.-->
<!-- The Business Data Catalog uses the LOB system name as the
application name in the Administation user interface.-->
<LobSystem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://schemas.microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Type="WebService" Version="1.0.0.0" Name="SampleWebService" xmlns="https://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">
<Properties>
<!-- The Web Service proxy namespace name you specify here
is used by the Business Data Catalog when it generates the
proxy.-->
<Property Name="WebServiceProxyNamespace" Type="System.String">SampleWebServiceProxy</Property>
<!-- Enter the wildcard character that your Web methods
support. The Business Data Catalog uses the wildcard
character with filters.-->
<Property Name="WildcardCharacter" Type="System.String">$</Property>
<!-- URL to WSDL or ASMX.-->
<Property Name="WsdlFetchUrl" Type="System.String">http://YourWebServerName/Service.asmx</Property>
</Properties>
<LobSystemInstances>
<!-- The LOB instance name is used by business data clients in the
entity picker, and so on.-->
<LobSystemInstance Name="SampleWebServiceInstance">
<Properties>
<Property Name="LobSystemName" Type="System.String">SampleWebService</Property>
</Properties>
</LobSystemInstance>
</LobSystemInstances>
<Entities>
<!-- Defines the entity called Address. The Address structure is
part of the customer structure returned by the GetCustomerByID Web
method.-->
<!-- By defining an entity for Address, we can model an association
and return the addresses for each customer.-->
<!-- Because this entity is used only in association methods, we
do not need any other methods.-->
<!-- The association method reuses the GetCustomerByID method of
the Customer entity to return the address collection.-->
<Entity EstimatedInstanceCount="10000" Name="Address">
<Properties>
<Property Name="Title" Type="System.String">StateProvince</Property>
</Properties>
<!--This entity does not have any identifier as we just want to
display a list of addresses for a customer. -->
<!--This means that it's just a blob of data - you cannot run
actions on this entity, use the entity instance picker, relate
with it, cannot search or crawl it, and so on. -->
<Methods>
<!-- Dummy finder for Address entity. -->
<Method Name="GetAddresses">
<Parameters>
<Parameter Direction="Return" Name="Addresses">
<TypeDescriptor TypeName="SampleWebServiceProxy.CustomerAddress[], SampleWebService" IsCollection="true" Name="CustomerAddresses" >
<TypeDescriptors>
<TypeDescriptor TypeName="SampleWebServiceProxy.CustomerAddress, SampleWebService" Name="CustomerAddress" >
<Properties>
<Property Name="ComplexFormatting" Type="System.String" />
<Property Name="FormatString" Type="System.String">{0}, {1}, {2}, {3} - PostalCode, {4}</Property>
</Properties>
<TypeDescriptors>
<TypeDescriptor TypeName="SampleWebServiceProxy.CustomerStreet, SampleWebService" 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="System.String" Name="StateProvince" />
<TypeDescriptor TypeName="System.String" Name="CountryRegion" />
<TypeDescriptor TypeName="System.String" Name="PostalCode" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="Finder" ReturnParameterName="Addresses" ReturnTypeDescriptorName="CustomerAddresses" ReturnTypeDescriptorLevel="0" Name="GetAddressesInstance" />
</MethodInstances>
</Method>
</Methods>
</Entity>
<!-- The Customer entity has IDEnumerator,
Finder, and SpecificFinder.-->
<!-- The Customer return structure from the Web method
GetCustomerByID also contains an address collection that is used
to get addresses for a customer.-->
<!-- The Customer entity also demonstrates the self-referential entity
association concept - cusomers have child customers. The
GetChildCustomersForCustomer method is the association method.-->
<Entity EstimatedInstanceCount="10000" Name="Customer">
<Properties>
<Property Name="Title" Type="System.String">Name</Property>
</Properties>
<Identifiers>
<Identifier TypeName="System.String" Name="CustomerID" />
</Identifiers>
<Methods>
<!--Demonstrates the self-referential entity association
concept.-->
<!--Each customer in the back-end data source has a
ParentCustomerID.-->
<Method Name="GetChildCustomersForCustomer">
<Parameters>
<!--Parameter names are tokens used by the Business
Data Catalog. You can name them anything.-->
<!--TypeDescriptor names must match the back-end input and
output structures' or fields' names.-->
<Parameter Direction="In" Name="custid">
<TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" Name="custid" />
</Parameter>
<Parameter Direction="Return" Name="Customers">
<!-- The TypeName attribute takes the type and the LOB
system name for complex types.-->
<!-- The IsCollection is true here because the customer
array is a collection of customers.-->
<!-- The TypeDescriptor with IsCollection= true can have
only one child.-->
<TypeDescriptor TypeName="SampleWebServiceProxy.Customer[], SampleWebService" IsCollection="true" Name="ArrayOfCustomer">
<TypeDescriptors>
<TypeDescriptor TypeName="SampleWebServiceProxy.Customer, SampleWebService" Name="Customer">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" Name="CustomerID" />
<TypeDescriptor TypeName="System.String" Name="Name" />
<TypeDescriptor TypeName="System.Int64" Name="WorkPhoneNumber" />
<TypeDescriptor TypeName="System.Int64" Name="MobilePhoneNumber" />
<TypeDescriptor TypeName="System.String" Name="Industry" />
<TypeDescriptor TypeName="System.String" Name="WebSite" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
</Method>
<Method Name="GetCustomerIDs">
<Parameters>
<Parameter Direction="Return" Name="CustomerIDs">
<TypeDescriptor TypeName="System.String[]" IsCollection="true" Name="ArrayOfString">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" Name="CustomerID" />
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="IdEnumerator" ReturnParameterName="CustomerIDs" ReturnTypeDescriptorName="ArrayOfString" ReturnTypeDescriptorLevel="0" Name="GetCustomerIDsInstance" />
</MethodInstances>
</Method>
<Method Name="GetCustomers">
<FilterDescriptors>
<FilterDescriptor Type="Wildcard" Name="Name" />
<!-- Limit filter tells Business Data Catalog to bring back
only the specified number of rows back from the LOB
application.-->
<!-- Notice that the back-end method should support this
functionality to return only the specified number of rows.
For a sample, see SampleWebService.-->
<FilterDescriptor Type="Limit" Name="Limit" />
</FilterDescriptors>
<Parameters>
<Parameter Direction="In" Name="name">
<TypeDescriptor TypeName="System.String" AssociatedFilter="Name" Name="name" />
</Parameter>
<Parameter Direction="In" Name="limit">
<TypeDescriptor TypeName="System.Int32" AssociatedFilter="Limit" Name="limit" />
</Parameter>
<Parameter Direction="Return" Name="Customers">
<TypeDescriptor TypeName="SampleWebServiceProxy.Customer[], SampleWebService" IsCollection="true" Name="ArrayOfCustomer">
<TypeDescriptors>
<TypeDescriptor TypeName="SampleWebServiceProxy.Customer, SampleWebService" Name="Customer">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" Name="CustomerID" />
<TypeDescriptor TypeName="System.String" Name="Name" />
<TypeDescriptor TypeName="System.Int64" Name="WorkPhoneNumber" />
<TypeDescriptor TypeName="System.Int64" Name="MobilePhoneNumber" />
<TypeDescriptor TypeName="System.String" Name="Industry" />
<TypeDescriptor TypeName="System.String" Name="WebSite" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="Finder" ReturnParameterName="Customers" ReturnTypeDescriptorName="ArrayOfCustomer" ReturnTypeDescriptorLevel="0" Name="FindCustomerInstances" />
</MethodInstances>
</Method>
<Method Name="GetCustomerByID">
<!--SpecificFinder for customer.-->
<!--The GetCustomerByID is also reused as an association method for getting addresses of a customer.-->
<Parameters>
<Parameter Direction="In" Name="id">
<TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" Name="id" />
</Parameter>
<Parameter Direction="Return" Name="Customer">
<TypeDescriptor TypeName="SampleWebServiceProxy.Customer, SampleWebService" Name="Customer">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" Name="CustomerID" />
<TypeDescriptor TypeName="System.String" Name="Name" />
<TypeDescriptor TypeName="System.Int64" Name="WorkPhoneNumber" />
<TypeDescriptor TypeName="System.Int64" Name="MobilePhoneNumber" />
<TypeDescriptor TypeName="System.String" Name="Industry" />
<TypeDescriptor TypeName="System.String" Name="WebSite" />
<!--The Customer structure also contains a collection
of addresses for the customer. -->
<!--Return parameters can have multiple TypeDescriptors with IsCollection=true. This is an example of that.-->
<!--When Business Data Caltalog executes the SpecificFinder, it ignores the addresses collection because it is a collection.-->
<!--When this same method is used to get addresses for a customer in an association, the return TypeDecriptor name is specified as CustomerAddresses.-->
<TypeDescriptor TypeName="SampleWebServiceProxy.CustomerAddress[], SampleWebService" IsCollection="true" Name="CustomerAddresses" >
<TypeDescriptors>
<TypeDescriptor TypeName="SampleWebServiceProxy.CustomerAddress, SampleWebService" Name="CustomerAddress" >
<Properties>
<!--Business Data clients can display only primitives and flat structures by default.-->
<!--To display the Street structure that is part of the Address, we use ComplexFormatting.-->
<!--To use ComplexFormatting, you must
enable it at the TypeDescriptor that
contains the struct as shown below.-->
<Property Name="ComplexFormatting" Type="System.String" />
</Properties>
<TypeDescriptors>
<TypeDescriptor TypeName="SampleWebServiceProxy.CustomerStreet, SampleWebService" Name="Street">
<Properties>
<!--After ComplexFormatting is
enabled in the container of this struct,
define the format here.-->
<!--{0}, {1} stand for BlockNumber and Street of the Street struct. -->
<Property Name="FormatString" Type="System.String">{0}, {1}</Property>
</Properties>
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" Name="BlockNumber" />
<TypeDescriptor TypeName="System.String" Name="Street" />
</TypeDescriptors>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="City" />
<TypeDescriptor TypeName="System.String" Name="StateProvince" />
<TypeDescriptor TypeName="System.String" Name="CountryRegion" />
<TypeDescriptor TypeName="System.String" Name="PostalCode" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="SpecificFinder" ReturnParameterName="Customer" ReturnTypeDescriptorName="Customer" ReturnTypeDescriptorLevel="0" Name="FindCustomerInstance" />
<!--Association is defined at the bottom.-->
</MethodInstances>
</Method>
</Methods>
</Entity>
<Entity EstimatedInstanceCount="10000" Name="Region">
<Properties>
<Property Name="Title" Type="System.String">Name</Property>
</Properties>
<Identifiers>
<Identifier TypeName="System.String" Name="RegionID" />
</Identifiers>
<Methods>
<Method Name="GetRegions">
<FilterDescriptors>
<FilterDescriptor Type="Wildcard" Name="Name" />
</FilterDescriptors>
<Parameters>
<Parameter Direction="In" Name="name">
<TypeDescriptor TypeName="System.String" AssociatedFilter="Name" Name="name" />
</Parameter>
<Parameter Direction="Return" Name="Regions">
<TypeDescriptor TypeName="SampleWebServiceProxy.Region[], SampleWebService" IsCollection="true" Name="ArrayOfRegion">
<TypeDescriptors>
<TypeDescriptor TypeName="SampleWebServiceProxy.Region, SampleWebService" Name="Region">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="RegionID" Name="RegionID" />
<TypeDescriptor TypeName="System.String" Name="Name" />
<TypeDescriptor TypeName="System.String" Name="Group" />
<TypeDescriptor TypeName="System.Decimal" Name="SalesLastYear" />
<TypeDescriptor TypeName="System.Decimal" Name="SalesYTD" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="Finder" ReturnParameterName="Regions" ReturnTypeDescriptorName="ArrayOfRegion" ReturnTypeDescriptorLevel="0" Name="FindRegionInstances" />
</MethodInstances>
</Method>
<Method Name="GetRegionByID">
<Parameters>
<Parameter Direction="In" Name="id">
<TypeDescriptor TypeName="System.String" IdentifierName="RegionID" Name="id" />
</Parameter>
<Parameter Direction="Return" Name="Region">
<TypeDescriptor TypeName="SampleWebServiceProxy.Region, SampleWebService" Name="Region">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="RegionID" Name="RegionID" />
<TypeDescriptor TypeName="System.String" Name="Name" />
<TypeDescriptor TypeName="System.String" Name="Group" />
<TypeDescriptor TypeName="System.Decimal" Name="SalesLastYear" />
<TypeDescriptor TypeName="System.Decimal" Name="SalesYTD" />
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="SpecificFinder" ReturnParameterName="Region" ReturnTypeDescriptorName="Region" ReturnTypeDescriptorLevel="0" Name="FindRegionInstance" />
</MethodInstances>
</Method>
</Methods>
</Entity>
<Entity EstimatedInstanceCount="10000" Name="Order">
<Properties>
<Property Name="Title" Type="System.String">OrderID</Property>
</Properties>
<Identifiers>
<Identifier TypeName="System.String" Name="OrderID" />
</Identifiers>
<Methods>
<!--Association method - Demonstrates an assoication that has
two sources - Customer and Region.-->
<!--Also demonstrates that you can have filters in association
methods as well.-->
<Method Name="GetOrdersForCustomerAndRegion">
<FilterDescriptors>
<FilterDescriptor Type="Comparison" Name="CurrencyCode" >
<Properties>
<Property Name="Comparator" Type="System.String">Equals</Property>
</Properties>
</FilterDescriptor>
</FilterDescriptors>
<Parameters>
<Parameter Direction="In" Name="custid">
<!--Specify the IdentifierEntityName when the identifier
you want to point to is not in the local entity. -->
<!--In this case, the input parameters for this
association are the foreign keys from the Customer and
Region entities.-->
<TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" IdentifierEntityName="Customer" Name="custid" />
</Parameter>
<Parameter Direction="In" Name="regid">
<TypeDescriptor TypeName="System.String" IdentifierName="RegionID" IdentifierEntityName="Region" Name="regid" />
</Parameter>
<Parameter Direction="In" Name="curcode">
<TypeDescriptor TypeName="System.String" AssociatedFilter="CurrencyCode" Name="curcode" />
</Parameter>
<Parameter Direction="Return" Name="Orders">
<TypeDescriptor TypeName="SampleWebServiceProxy.Order[], SampleWebService" IsCollection="true" Name="ArrayOfOrder">
<TypeDescriptors>
<TypeDescriptor TypeName="SampleWebServiceProxy.Order, SampleWebService" Name="Order">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="OrderID" Name="OrderID" />
<TypeDescriptor TypeName="System.String" Name="CustomerID" />
<TypeDescriptor TypeName="System.String" Name="RegionID" />
<TypeDescriptor TypeName="System.String" Name="CurrencyCode" />
<TypeDescriptor TypeName="System.Decimal" Name="SubTotal" />
<TypeDescriptor TypeName="System.String" Name="OrderDate" />
<TypeDescriptor TypeName="System.String" Name="ShipDate" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
</Method>
<Method Name="GetOrderByID">
<Parameters>
<Parameter Direction="In" Name="id">
<TypeDescriptor TypeName="System.String" IdentifierName="OrderID" Name="id" />
</Parameter>
<Parameter Direction="Return" Name="Order">
<TypeDescriptor TypeName="SampleWebServiceProxy.Order, SampleWebService" Name="Order">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="OrderID" Name="OrderID" />
<TypeDescriptor TypeName="System.String" Name="CustomerID" />
<TypeDescriptor TypeName="System.String" Name="RegionID" />
<TypeDescriptor TypeName="System.String" Name="CurrencyCode" />
<TypeDescriptor TypeName="System.Decimal" Name="SubTotal" />
<TypeDescriptor TypeName="System.String" Name="OrderDate" />
<TypeDescriptor TypeName="System.String" Name="ShipDate" />
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="SpecificFinder" ReturnParameterName="Order" ReturnTypeDescriptorName="Order" ReturnTypeDescriptorLevel="0" Name="FindOrderInstance" />
</MethodInstances>
</Method>
<Method Name="GetOrders">
<Parameters>
<Parameter Direction="Return" Name="Orders">
<TypeDescriptor TypeName="SampleWebServiceProxy.Order[], SampleWebService" IsCollection="true" Name="ArrayOfOrder">
<TypeDescriptors>
<TypeDescriptor TypeName="SampleWebServiceProxy.Order, SampleWebService" Name="Order">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="OrderID" Name="OrderID" />
<TypeDescriptor TypeName="System.String" Name="CustomerID" />
<TypeDescriptor TypeName="System.String" Name="RegionID" />
<TypeDescriptor TypeName="System.String" Name="CurrencyCode" />
<TypeDescriptor TypeName="System.Decimal" Name="SubTotal" />
<TypeDescriptor TypeName="System.String" Name="OrderDate" />
<TypeDescriptor TypeName="System.String" Name="ShipDate" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="Finder" ReturnParameterName="Orders" ReturnTypeDescriptorName="ArrayOfOrder" ReturnTypeDescriptorLevel="0" Name="FindOrderInstances" />
</MethodInstances>
</Method>
</Methods>
</Entity>
<!--This entity demonstrates the use of multiple
identifiers.-->
<!--OrderID is a foriegn key from Order.-->
<Entity EstimatedInstanceCount="10000" Name="LineItem">
<Properties>
<Property Name="Title" Type="System.String">ProductName</Property>
</Properties>
<Identifiers>
<Identifier TypeName="System.String" Name="OrderID" />
<Identifier TypeName ="System.String" Name="ProductID" />
</Identifiers>
<Methods>
<Method Name="GetLineItemsForOrder">
<Parameters>
<Parameter Direction="In" Name="ordid">
<TypeDescriptor TypeName="System.String" IdentifierName="OrderID" IdentifierEntityName="Order" Name="ordid" />
</Parameter>
<Parameter Direction="Return" Name="LineItems">
<TypeDescriptor TypeName="SampleWebServiceProxy.LineItem[], SampleWebService" IsCollection="true" Name="ArrayOfLineItem">
<TypeDescriptors>
<TypeDescriptor TypeName="SampleWebServiceProxy.LineItem, SampleWebService" Name="LineItem">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="OrderID" Name="OrderID" />
<TypeDescriptor TypeName="System.String" IdentifierName="ProductID" Name="ProductID" />
<TypeDescriptor TypeName="System.String" Name="ProductName" />
<TypeDescriptor TypeName="System.Int32" Name="OrderQty" />
<TypeDescriptor TypeName="System.Decimal" Name="UnitPrice" />
<TypeDescriptor TypeName="System.Decimal" Name="LineTotal" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
</Method>
<Method Name="GetLineItemByID">
<Parameters>
<Parameter Direction="In" Name="ordid">
<TypeDescriptor TypeName="System.String" IdentifierName="OrderID" Name="ordid" />
</Parameter>
<Parameter Direction="In" Name="prodid">
<TypeDescriptor TypeName="System.String" IdentifierName="ProductID" Name="prodid" />
</Parameter>
<Parameter Direction="Return" Name="LineItem">
<TypeDescriptor TypeName="SampleWebServiceProxy.LineItem, SampleWebService" Name="LineItem">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="OrderID" Name="OrderID" />
<TypeDescriptor TypeName="System.String" IdentifierName="ProductID" Name="ProductID" />
<TypeDescriptor TypeName="System.String" Name="ProductName" />
<TypeDescriptor TypeName="System.Int32" Name="OrderQty" />
<TypeDescriptor TypeName="System.Decimal" Name="UnitPrice" />
<TypeDescriptor TypeName="System.Decimal" Name="LineTotal" />
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="SpecificFinder" ReturnParameterName="LineItem" ReturnTypeDescriptorName="LineItem" ReturnTypeDescriptorLevel="0" Name="FindLineItemInstance" />
</MethodInstances>
</Method>
<Method Name="GetLineItems">
<Parameters>
<Parameter Direction="Return" Name="LineItems">
<TypeDescriptor TypeName="SampleWebServiceProxy.LineItem[], SampleWebService" IsCollection="true" Name="ArrayOfLineItem">
<TypeDescriptors>
<TypeDescriptor TypeName="SampleWebServiceProxy.LineItem, SampleWebService" Name="LineItem">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="OrderID" Name="OrderID" />
<TypeDescriptor TypeName="System.String" IdentifierName="ProductID" Name="ProductID" />
<TypeDescriptor TypeName="System.String" Name="ProductName" />
<TypeDescriptor TypeName="System.Int32" Name="OrderQty" />
<TypeDescriptor TypeName="System.Decimal" Name="UnitPrice" />
<TypeDescriptor TypeName="System.Decimal" Name="LineTotal" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="Finder" ReturnParameterName="LineItems" ReturnTypeDescriptorName="ArrayOfLineItem" ReturnTypeDescriptorLevel="0" Name="FindLineItemInstances" />
</MethodInstances>
</Method>
</Methods>
</Entity>
</Entities>
<Associations>
<!--Self-refential entity association.-->
<Association Name="CustomerToChildCustomers" AssociationMethodEntityName="Customer" AssociationMethodName="GetChildCustomersForCustomer" AssociationMethodReturnParameterName="Customers" AssociationMethodReturnTypeDescriptorName="ArrayOfCustomer" AssociationMethodReturnTypeDescriptorLevel="0">
<SourceEntity Name="Customer" />
<DestinationEntity Name="Customer" />
</Association>
<!--Multiple source association.-->
<Association Name="CustomerAndRegionToOrders" AssociationMethodEntityName="Order" AssociationMethodName="GetOrdersForCustomerAndRegion" AssociationMethodReturnParameterName="Orders" AssociationMethodReturnTypeDescriptorName="ArrayOfOrder" AssociationMethodReturnTypeDescriptorLevel="0">
<SourceEntity Name="Customer" />
<SourceEntity Name="Region" />
<DestinationEntity Name="Order" />
</Association>
<Association Name="OrderToLineItems" AssociationMethodEntityName="LineItem" AssociationMethodName="GetLineItemsForOrder" AssociationMethodReturnParameterName="LineItems" AssociationMethodReturnTypeDescriptorName="ArrayOfLineItem" AssociationMethodReturnTypeDescriptorLevel="0">
<SourceEntity Name="Order" />
<DestinationEntity Name="LineItem" />
</Association>
<!--Reuses the Web method used for SpecificFinder, also an
association method. Uses only a part of the return structure by
using the optional AssociationMethodReturnTypeDescriptorName
attribute. ArrayOfCustomer is 0 and CustomerAddresses is 1. Only
useful to disambiguate same-named TypeDescriptors.-->
<!--The AssociationMethodReturnTypeDescriptorLevel optional
attribute indicates the level of the TypeDescriptor in the
return structure. -->
<Association Name="CustomerToAddresses" AssociationMethodEntityName="Customer" AssociationMethodName="GetCustomerByID" AssociationMethodReturnParameterName="Customer" AssociationMethodReturnTypeDescriptorName="CustomerAddresses" AssociationMethodReturnTypeDescriptorLevel="1">
<SourceEntity Name="Customer" />
<DestinationEntity Name="Address" />
</Association>
</Associations>
</LobSystem>