3.1 Database Model

This is an example of a simple model of an LOB system of type Database. It demonstrates how to use a set of LobSystem and LobSystemInstance properties to configure connection to a database.

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <Model Name="ExampleApplicationDefinition" xmlns="http://schemas.microsoft.com/windows/2007/BusinessDataCatalog">
   <LobSystems>
     <LobSystem Name="ExampleCRM" Type="Database">
       <Properties>
         <!-- This database uses % symbol for the LIKE operator. -->
         <Property Name="WildcardCharacter" Type="System.String">%</Property>
       </Properties>
       <LobSystemInstances>
         <LobSystemInstance Name="ExampleServer">
           <Properties>
             <Property Name="AuthenticationMode" Type="System.String">PassThrough</Property>
             <!-- The database instance is named ExampleSQL and is running on the same computer as the application using this Model. -->
             <Property Name="RdbConnection Data Source" Type="System.String">(local)\ExampleSQL</Property>
             <!-- The database to be used is named ExampleDB. -->
             <Property Name="RdbConnection Initial Catalog" Type="System.String">ExampleDB</Property>
             <!-- The database instance is using integrated security. -->
             <Property Name="RdbConnection Integrated Security" Type="System.String">SSPI</Property>
           </Properties>
         </LobSystemInstance>
       </LobSystemInstances>
       <Entities>
         <Entity Name="Customer" Namespace="example.com" Version="1.0.0.0">
           <Identifiers>
             <Identifier Name="CustomerIdentifier" TypeName="System.Int32" />
           </Identifiers>
           <Methods>
             <Method Name="GetCustomer">
               <Properties>
                 <!-- sp_GetCustomer is the name of the stored procedure that implements this method. -->
                 <Property Name="RdbCommandText" Type="System.String">sp_GetCustomer</Property>
                 <!-- Using stored procedures is a best practice when connecting to database systems. -->
               <Property Name="RdbCommandType" Type="System.Data.CommandType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">StoredProcedure</Property>
               </Properties>
               <Parameters>
                 <!-- The parameter name @CustomerId as expected by the stored procedure. -->
                 <Parameter Name="@CustomerId" Direction="In">
                   <!-- The IdentifierName attribute is required here. -->
                   <TypeDescriptor Name="Id" TypeName="System.Int32" IdentifierName="CustomerIdentifier" />
                 </Parameter>
                 <Parameter Name="Customers" Direction="Return">
                 <!-- This SQL command returns a result set containing precisely one row, but it is still wrapped by a data reader and appears as a collection. -->
                   <TypeDescriptor Name="CustomerDataReader" TypeName="System.Data.SqlClient.SqlDataReader, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true">
                     <TypeDescriptors>
                       <!-- This is a data record corresponding to a single row of the result set. -->
                       <TypeDescriptor Name="Customer" TypeName="System.Data.IDataRecord, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
                         <TypeDescriptors>
                           <!-- The IdentifierName attribute is required here to associate the field with the Identifier. -->
                           <TypeDescriptor Name="Id" TypeName="System.Int32" IdentifierName="CustomerIdentifier" />
                           <TypeDescriptor Name="FirstName" TypeName="System.String" />
                           <TypeDescriptor Name="LastName" TypeName="System.String" />
                         </TypeDescriptors>
                       </TypeDescriptor>
                     </TypeDescriptors>
                   </TypeDescriptor>
                 </Parameter>
               </Parameters>
               <MethodInstances>
                 <!-- The ReturnParameterName and ReturnTypeDescriptor are pointing to the data record to be returned. The result set that is wrapping it is not important and can be ignored when processing results. -->
                 <MethodInstance Name="GetCustomer" Type="SpecificFinder" ReturnParameterName="Customers" ReturnTypeDescriptorName="Customer" />
               </MethodInstances>
             </Method>
           </Methods>
         </Entity>
       </Entities>
     </LobSystem>
   </LobSystems>
 </Model>