Файлы модели и ресурсов
Дата последнего изменения: 15 апреля 2010 г.
Применимо к: SharePoint Server 2010
подключения к бизнес-данным (BDC) поддерживает два типа XML-файлов определения приложения: определение модели и ресурса. Файл определения модели содержит базовые XML-метаданные для системы. Файл ресурса позволяет импортировать или экспортировать только локализованные имена, свойства и разрешения в любом сочетании. Далее рассматриваются типы файлов ресурсов.
LocalizedNames Содержит локализованные имена для объектов метаданных на определенном языке. При импорте этого файла данные в нем объединяются с существующими метаданными в хранилище метаданных. Если локализованное имя для данного языка уже существует, оно заменяется вариантом из файла LocalizedNames.
Properties Содержит свойства объектов метаданных. При импорте этого файла данные в нем объединяются с существующими метаданными в хранилище метаданных. Если свойство уже существует, его значение заменяется данными из файла Properties.
Permissions Содержит списки управления доступом (ACL) для объектов метаданных. При импорте этого файла данные в нем объединяются с существующими метаданными в хранилище метаданных. Однако, если элемент управления доступом (ACE) для объекта уже существует, его значение заменяется данными из файла Permissions. Например, если в существующем определении приложения есть только пользователь А с доступом к сущности А и импортируется файл Permissions, который содержит только пользователя Б с доступом к сущности А, то существующий список управления доступом для сущности А удаляется и создается список только с пользователем Б.
При импорте файла модели для приложения BDC заменяет существующие метаданные для этого приложения. Однако, если импортировать файлы ресурсов с локализованными именами, свойствами или разрешениями в любом сочетании, BDC выполняет объединение. Объединяется содержимое файла ресурса с уже существующими метаданными для этого приложения.
Это очень полезно в определенных ситуациях, например, если файл определения приложения для сложной системы планирования ресурсов предприятия (ERP) уже импортирован. Рассмотрим три следующие ситуации.
Изменяются сведения о серверном подключении. Чтобы обновить сведения о подключении, можно создать простой файл ресурсов свойств, которые содержит только измененные свойства в объекте LobSystemInstance, и импортировать его. BDC объединяет эти данные с существующими свойствами LobSystemInstance и, если свойство уже существует, его значение заменяется новыми данными из файла ресурсов свойств.
Компания теперь работает в другом регионе и приложение должно поддерживать новый язык. В этом случае можно создать файл ресурсов LocalizedNames, который содержит только локализованные имена для этого языка, и импортировать его. BDC объединяет эти данные с существующими метаданными, что решает эту проблему.
Франшиза должна использовать приложение в своей среде. В этом случае можно создать файл ресурсов разрешений, который содержит списки управления доступом только для пользователей франшизы, и импортировать его. BDC удаляет существующие списки управления доступом и создает списки с новыми данными, что решает эту проблему.
Использование файлов ресурсов, как описано в предыдущих ситуациях, более эффективно, чем использование файла модели. Если обновить файл модели с использованием локализованных имен или свойств, служба BDC должна заменить существующие метаданные на новые и удалить таким образом существующие метаданные. Это не всегда желательно и может привести к необходимости проведения дополнительных проверок. Например, при каждом импорте файла модели BDC удаляет все объекты метаданных и их идентификаторы, поэтому для поиска требуется полный обход объектов метаданных.
![]() |
---|
Один файл определения приложения может содержать любое сочетание файлов модели и ресурсов. Центр администрирования SharePoint поддерживает эту возможность в пользовательском интерфейсе импорта и экспорта, а объектная модель поддерживает данную возможность за счет использования битовых операторов OR (|). |
Примеры кода
Самый простой способ понять использование файлов определения приложений — поэкспериментировать с возможностью экспорта определения приложения в пользовательском интерфейсе центра администрирования SharePoint. Возможность экспорта определения приложения позволяет экспортировать метаданные в любом сочетание файлов модели или ресурсов.
В следующих примерах показаны метаданные разрешений и свойств для метаданных AdventureWorks2000.
![]() |
---|
В этих примерах, определенные значения имени домена и имени пользователя заменены на универсальные значения. |
Разрешения
В следующем примере XML-кода показан образец файла ресурсов с разрешениями.
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<LobSystem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://schemas.microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadataResource.xsd" Name="AdventureWorksSample" xmlns="https://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
<LobSystemInstances>
<LobSystemInstance Name="AdventureWorksSampleInstance" />
</LobSystemInstances>
<Entities>
<Entity Name="Product">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
<Identifiers>
<Identifier Name="ProductID" />
</Identifiers>
<Methods>
<Method Name="GetProducts">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
<FilterDescriptors>
<FilterDescriptor Name="ID" />
<FilterDescriptor Name="Name" />
<FilterDescriptor Name="ProductNumber" />
</FilterDescriptors>
<Parameters>
<Parameter Name="@MinProductID">
<TypeDescriptor Name="MinProductID" />
</Parameter>
<Parameter Name="@MaxProductID">
<TypeDescriptor Name="MaxProductID" />
</Parameter>
<Parameter Name="@Name">
<TypeDescriptor Name="Name" />
</Parameter>
<Parameter Name="@ProductNumber">
<TypeDescriptor Name="ProductNumber" />
</Parameter>
<Parameter Name="Products">
<TypeDescriptor Name="ProductDataReader">
<TypeDescriptors>
<TypeDescriptor Name="ProductDataRecord">
<TypeDescriptors>
<TypeDescriptor Name="ProductID" />
<TypeDescriptor Name="Name" />
<TypeDescriptor Name="ProductNumber" />
<TypeDescriptor Name="ListPrice" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="ProductFinderInstance">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
<MethodInstance Name="ProductSpecificFinderInstance">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
<Method Name="ProductIDEnumerator">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
<Parameters>
<Parameter Name="ProductIDs">
<TypeDescriptor Name="Products">
<TypeDescriptors>
<TypeDescriptor Name="Product">
<TypeDescriptors>
<TypeDescriptor Name="ProductID" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="ProductIDEnumeratorInstance">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
</Methods>
<Actions>
<Action Name="Search on MSN">
<ActionParameters>
<ActionParameter Name="Name" />
</ActionParameters>
</Action>
<Action Name="View Profile">
<ActionParameters>
<ActionParameter Name="ProductID" />
</ActionParameters>
</Action>
</Actions>
</Entity>
<Entity Name="SalesOrder">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
<Identifiers>
<Identifier Name="SalesOrderID" />
</Identifiers>
<Methods>
<Method Name="GetSalesOrders">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
<FilterDescriptors>
<FilterDescriptor Name="ID" />
<FilterDescriptor Name="SalesOrderNumber" />
</FilterDescriptors>
<Parameters>
<Parameter Name="@MinSalesOrderID">
<TypeDescriptor Name="MinSalesOrderID" />
</Parameter>
<Parameter Name="@MaxSalesOrderID">
<TypeDescriptor Name="MaxSalesOrderID" />
</Parameter>
<Parameter Name="@SalesOrderNumber">
<TypeDescriptor Name="SalesOrderNumber" />
</Parameter>
<Parameter Name="SalesOrders">
<TypeDescriptor Name="SalesOrderDataReader">
<TypeDescriptors>
<TypeDescriptor Name="SalesOrderDataRecord">
<TypeDescriptors>
<TypeDescriptor Name="SalesOrderID" />
<TypeDescriptor Name="OrderDate" />
<TypeDescriptor Name="IndividualID" />
<TypeDescriptor Name="SubTotal" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="SalesOrderFinderInstance">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
<MethodInstance Name="SalesOrderSpecificFinderInstance">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
</Methods>
<Actions>
<Action Name="View Profile">
<ActionParameters>
<ActionParameter Name="SalesOrderID" />
</ActionParameters>
</Action>
</Actions>
</Entity>
<Entity Name="Customer">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
<Identifiers>
<Identifier Name="IndividualID" />
</Identifiers>
<Methods>
<Method Name="GetCustomers">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
<FilterDescriptors>
<FilterDescriptor Name="ID" />
<FilterDescriptor Name="Name" />
</FilterDescriptors>
<Parameters>
<Parameter Name="@MinIndividualID">
<TypeDescriptor Name="MinIndividualID" />
</Parameter>
<Parameter Name="@MaxIndividualID">
<TypeDescriptor Name="MaxIndividualID" />
</Parameter>
<Parameter Name="@Name">
<TypeDescriptor Name="Name" />
</Parameter>
<Parameter Name="Customers">
<TypeDescriptor Name="CustomerDataReader">
<TypeDescriptors>
<TypeDescriptor Name="CustomerDataRecord">
<TypeDescriptors>
<TypeDescriptor Name="IndividualID" />
<TypeDescriptor Name="FirstName" />
<TypeDescriptor Name="LastName" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="CustomerFinderInstance">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
<MethodInstance Name="CustomerSpecificFinderInstance">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
<Method Name="GetSalesOrdersForCustomer">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
<Parameters>
<Parameter Name="@IndividualID">
<TypeDescriptor Name="IndividualID" />
</Parameter>
<Parameter Name="SalesOrders">
<TypeDescriptor Name="SalesOrderDataReader">
<TypeDescriptors>
<TypeDescriptor Name="SalesOrderDataRecord">
<TypeDescriptors>
<TypeDescriptor Name="SalesOrderID" />
<TypeDescriptor Name="OrderDate" />
<TypeDescriptor Name="IndividualID" />
<TypeDescriptor Name="SubTotal" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
</Method>
</Methods>
<Actions>
<Action Name="Send Email">
<ActionParameters>
<ActionParameter Name="FirstName" />
</ActionParameters>
</Action>
<Action Name="View Profile">
<ActionParameters>
<ActionParameter Name="IndividualID" />
</ActionParameters>
</Action>
</Actions>
</Entity>
</Entities>
<Associations>
<Association Name="CustomerToSalesOrder">
<AccessControlList>
<AccessControlEntry Principal="domainname\username">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
</Association>
</Associations>
</LobSystem>
Свойства
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<LobSystem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://schemas.microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadataResource.xsd" Name="AdventureWorksSample" xmlns="https://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">
<Properties>
<Property Name="WildcardCharacter" Type="System.String">%</Property>
</Properties>
<LobSystemInstances>
<LobSystemInstance Name="AdventureWorksSampleInstance">
<Properties>
<Property Name="AuthenticationMode" Type="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAuthenticationMode">PassThrough</Property>
<Property Name="DatabaseAccessProvider" Type="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAccessProvider">SqlServer</Property>
<Property Name="RdbConnection Data Source" Type="System.String">ServerNameHere</Property>
<Property Name="RdbConnection Initial Catalog" Type="System.String">AdventureWorks2000</Property>
<Property Name="RdbConnection Integrated Security" Type="System.String">SSPI</Property>
<Property Name="RdbConnection Pooling" Type="System.String">false</Property>
</Properties>
</LobSystemInstance>
</LobSystemInstances>
<Entities>
<Entity Name="Product">
<Properties>
<Property Name="DefaultAction" Type="System.String">View Profile</Property>
<Property Name="Title" Type="System.String">Name</Property>
</Properties>
<Identifiers>
<Identifier Name="ProductID" />
</Identifiers>
<Methods>
<Method Name="GetProducts">
<Properties>
<Property Name="RdbCommandText" Type="System.String">
SELECT ProductID, Name, ProductNumber, ListPrice FROM Product WHERE (ProductID >= @MinProductID) AND (ProductID <= @MaxProductID) AND (Name LIKE @Name) AND (ProductNumber LIKE @ProductNumber)
</Property>
<Property Name="RdbCommandType" Type="System.Data.CommandType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">Text</Property>
</Properties>
<FilterDescriptors>
<FilterDescriptor Name="ID" />
<FilterDescriptor Name="Name">
<Properties>
<Property Name="UsedForDisambiguation" Type="System.Boolean">true</Property>
</Properties>
</FilterDescriptor>
<FilterDescriptor Name="ProductNumber" />
</FilterDescriptors>
<Parameters>
<Parameter Name="@MinProductID">
<TypeDescriptor Name="MinProductID" />
</Parameter>
<Parameter Name="@MaxProductID">
<TypeDescriptor Name="MaxProductID" />
</Parameter>
<Parameter Name="@Name">
<TypeDescriptor Name="Name" />
</Parameter>
<Parameter Name="@ProductNumber">
<TypeDescriptor Name="ProductNumber" />
</Parameter>
<Parameter Name="Products">
<TypeDescriptor Name="ProductDataReader">
<TypeDescriptors>
<TypeDescriptor Name="ProductDataRecord">
<TypeDescriptors>
<TypeDescriptor Name="ProductID" />
<TypeDescriptor Name="Name">
<Properties>
<Property Name="DisplayByDefault" Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
<TypeDescriptor Name="ProductNumber">
<Properties>
<Property Name="DisplayByDefault" Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
<TypeDescriptor Name="ListPrice" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="ProductFinderInstance" />
<MethodInstance Name="ProductSpecificFinderInstance" />
</MethodInstances>
</Method>
<Method Name="ProductIDEnumerator">
<Properties>
<Property Name="RdbCommandText" Type="System.String">SELECT ProductID FROM Product WHERE ProductID > 1200 AND ProductID < 1300</Property>
<Property Name="RdbCommandType" Type="System.Data.CommandType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">Text</Property>
</Properties>
<Parameters>
<Parameter Name="ProductIDs">
<TypeDescriptor Name="Products">
<TypeDescriptors>
<TypeDescriptor Name="Product">
<TypeDescriptors>
<TypeDescriptor Name="ProductID" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="ProductIDEnumeratorInstance" />
</MethodInstances>
</Method>
</Methods>
<Actions>
<Action Name="Search on MSN">
<ActionParameters>
<ActionParameter Name="Name" />
</ActionParameters>
</Action>
<Action Name="View Profile">
<ActionParameters>
<ActionParameter Name="ProductID" />
</ActionParameters>
</Action>
</Actions>
</Entity>
<Entity Name="SalesOrder">
<Properties>
<Property Name="DefaultAction" Type="System.String">View Profile</Property>
</Properties>
<Identifiers>
<Identifier Name="SalesOrderID" />
</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.Data.CommandType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">Text</Property>
</Properties>
<FilterDescriptors>
<FilterDescriptor Name="ID" />
<FilterDescriptor Name="SalesOrderNumber" />
</FilterDescriptors>
<Parameters>
<Parameter Name="@MinSalesOrderID">
<TypeDescriptor Name="MinSalesOrderID" />
</Parameter>
<Parameter Name="@MaxSalesOrderID">
<TypeDescriptor Name="MaxSalesOrderID" />
</Parameter>
<Parameter Name="@SalesOrderNumber">
<TypeDescriptor Name="SalesOrderNumber" />
</Parameter>
<Parameter Name="SalesOrders">
<TypeDescriptor Name="SalesOrderDataReader">
<TypeDescriptors>
<TypeDescriptor Name="SalesOrderDataRecord">
<TypeDescriptors>
<TypeDescriptor Name="SalesOrderID" />
<TypeDescriptor Name="OrderDate">
<Properties>
<Property Name="DisplayByDefault" Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
<TypeDescriptor Name="IndividualID">
<Properties>
<Property Name="DisplayByDefault" Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
<TypeDescriptor Name="SubTotal">
<Properties>
<Property Name="DisplayByDefault" Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="SalesOrderFinderInstance" />
<MethodInstance Name="SalesOrderSpecificFinderInstance" />
</MethodInstances>
</Method>
</Methods>
<Actions>
<Action Name="View Profile">
<ActionParameters>
<ActionParameter Name="SalesOrderID" />
</ActionParameters>
</Action>
</Actions>
</Entity>
<Entity Name="Customer">
<Properties>
<Property Name="DefaultAction" Type="System.String">View Profile</Property>
<Property Name="Title" Type="System.String">FirstName</Property>
</Properties>
<Identifiers>
<Identifier Name="IndividualID" />
</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.Data.CommandType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">Text</Property>
</Properties>
<FilterDescriptors>
<FilterDescriptor Name="ID" />
<FilterDescriptor Name="Name" />
</FilterDescriptors>
<Parameters>
<Parameter Name="@MinIndividualID">
<TypeDescriptor Name="MinIndividualID" />
</Parameter>
<Parameter Name="@MaxIndividualID">
<TypeDescriptor Name="MaxIndividualID" />
</Parameter>
<Parameter Name="@Name">
<TypeDescriptor Name="Name" />
</Parameter>
<Parameter Name="Customers">
<TypeDescriptor Name="CustomerDataReader">
<TypeDescriptors>
<TypeDescriptor Name="CustomerDataRecord">
<TypeDescriptors>
<TypeDescriptor Name="IndividualID" />
<TypeDescriptor Name="FirstName">
<Properties>
<Property Name="DisplayByDefault" Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
<TypeDescriptor Name="LastName">
<Properties>
<Property Name="DisplayByDefault" Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="CustomerFinderInstance" />
<MethodInstance Name="CustomerSpecificFinderInstance" />
</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.Data.CommandType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">Text</Property>
</Properties>
<Parameters>
<Parameter Name="@IndividualID">
<TypeDescriptor Name="IndividualID" />
</Parameter>
<Parameter Name="SalesOrders">
<TypeDescriptor Name="SalesOrderDataReader">
<TypeDescriptors>
<TypeDescriptor Name="SalesOrderDataRecord">
<TypeDescriptors>
<TypeDescriptor Name="SalesOrderID" />
<TypeDescriptor Name="OrderDate">
<Properties>
<Property Name="DisplayByDefault" Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
<TypeDescriptor Name="IndividualID">
<Properties>
<Property Name="DisplayByDefault" Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
<TypeDescriptor Name="SubTotal">
<Properties>
<Property Name="DisplayByDefault" Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
</Method>
</Methods>
<Actions>
<Action Name="Send Email">
<ActionParameters>
<ActionParameter Name="FirstName" />
</ActionParameters>
</Action>
<Action Name="View Profile">
<ActionParameters>
<ActionParameter Name="IndividualID" />
</ActionParameters>
</Action>
</Actions>
</Entity>
</Entities>
<Associations>
<Association Name="CustomerToSalesOrder" />
</Associations>
</LobSystem>