Model ファイルと Resource ファイル
最終更新日: 2010年4月15日
適用対象: SharePoint Server 2010
Business Data Connectivity (BDC) service で、Model および Resource という 2 種類の XML アプリケーション定義ファイルがサポートされるようになりました。Model 定義ファイルには、システムの基本 XML メタデータが含まれます。Resource ファイルを使用すると、ローカライズされた名前、プロパティ、および権限のみを、任意の組み合わせでインポートまたはエクスポートできます。以下に Resource ファイルの種類を示します。
LocalizedNames 特定のロケールにおけるメタデータ オブジェクトのローカライズされた名前が格納されています。このファイルをインポートすると、それらの情報はメタデータ ストア内の既存のメタデータと結合されます。そのロケール用にローカライズされた名前が既に存在する場合、LocalizedNames ファイルの情報で上書きされます。
Properties メタデータ オブジェクトのプロパティが格納されています。このファイルをインポートすると、それらの情報はメタデータ ストア内の既存のメタデータと結合されます。プロパティが既に存在する場合、プロパティの値は Properties ファイルの情報で上書きされます。
Permissions メタデータ オブジェクトのアクセス制御リスト (ACL) が格納されています。このファイルをインポートすると、それらの情報はメタデータ ストア内の既存のメタデータと結合されます。ただし、オブジェクトのアクセス制御エントリ (ACE) が既に存在する場合、ACE の値は Permissions ファイルの情報で上書きされます。たとえば、既存のアプリケーション定義に、エンティティ A へのアクセスを持つユーザー A のみがある場合、エンティティ A へのアクセスを持つユーザー B のみがある Permissions ファイルをインポートすると、エンティティ A の既存の ACL は削除され、ユーザー B のみがある ACL が作成されます。
アプリケーションの Model ファイルをインポートすると、そのアプリケーションの既存のメタデータは BDC によって上書きされます。ただし、ローカライズされた名前、プロパティ、または権限を含む Resource ファイルを任意の組み合わせでインポートすると、BDC は結合操作を実行します。Resource ファイルの内容が、そのアプリケーションのために既に存在するメタデータと結合されます。
この動作は、一定の状況で非常に便利です。たとえば、複雑な ERP システムのアプリケーション定義ファイルを既にインポートしたとします。ここで、以下の 3 つの状況について考えてみましょう。
バックエンドの接続情報に変更があります。接続情報を更新するため、LobSystemInstance オブジェクトで変更されたプロパティだけを含む簡単な Properties Resource ファイルを作成し、それをインポートすることができます。BDC により、この情報が既存の LobSystemInstance プロパティと結合されるので、プロパティが既に存在する場合、プロパティの値は Properties Resource ファイルの新しい情報で上書きされます。
会社が新しい地域に進出したため、新しくローカライズされた言語をアプリケーションでサポートする必要が生じました。この場合、新しい言語のためにローカライズされた名前だけを含む LocalizedNames Resource ファイルを作成し、そのファイルをインポートすることができます。この情報は BDC によって既存のメタデータと結合されるので、この課題は解決されます。
チェーン店の環境で、あるアプリケーションを使用する必要があります。この場合、チェーン店側で、チェーン店に属するユーザーの ACL だけを含む Permissions Resource ファイルを作成し、そのファイルをインポートすることができます。既存の ACL は BDC によって削除され、新しい情報で ACL が作成されるので、この課題は解決されます。
上の状況で説明したように Resource ファイルを使用することは、Model ファイルを更新するより適切な方法です。そのようにせず、ローカライズされた名前やプロパティを使って Model ファイルを更新すると、BDC は既存のメタデータを削除することによって新しいデータで既存のメタデータを上書きすることになります。この動作は望ましくない場合もあり、テストなどの作業が追加で必要になる可能性があります。たとえば、Model ファイルをインポートするたびに、すべてのメタデータ オブジェクトとそれらの ID が BDC によって削除されるため、検索のためにメタデータ オブジェクトのフル クロールが必要になります。
重要 |
---|
1 つのアプリケーション定義ファイルには、Model ファイルと Resource ファイルを任意に組み合わせて含めることができます。組み合わせての使用は、SharePoint サーバーの全体管理ではインポートとエクスポートのユーザー インターフェイス (UI) で、オブジェクト モデルではビット演算子の OR (|) を使用してサポートされています。 |
コード例
アプリケーション定義ファイルの機能を理解する最も簡単な方法は、SharePoint サーバーの全体管理の UI に用意されている [エクスポート] アプリケーション定義オプションを使用して実験してみることです。[エクスポート] アプリケーション定義オプションを使用すると、Model ファイルと Resource ファイルを任意に組み合わせてメタデータをエクスポートできます。
以下の例は、AdventureWorks2000 メタデータの、Permissions メタデータと Properties メタデータを示しています。
注意
下記の例では、ドメイン名とユーザー名の具体的な値は、一般的な値で置き換えてあります。
権限
以下の 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>