<?xml version="1.0" encoding="UTF-8"?>

<!--
	- Database Provider definitions.   
-->
<objects
  xmlns="http://www.springframework.net"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd">

  <!-- SQL SERVER -->
  
  <object id="SqlServer-1.1" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Microsoft SQL Server, provider V1.0.5000.0 in framework .NET V1.1"/>
        <constructor-arg name="assemblyName" value="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="connectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandType" value="System.Data.SqlClient.SqlCommand, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="parameterType" value="System.Data.SqlClient.SqlParameter, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="dataAdapterType" value="System.Data.SqlClient.SqlDataAdapter, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandBuilderType" value="System.Data.SqlClient.SqlCommandBuilder, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="System.Data.SqlDbType, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="parameterDbTypeProperty" value="SqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="System.Data.SqlClient.SqlException, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].Number.ToString()"/>

        <!-- TODO select form system db all errors that have 'incorrect syntax' at the start of the error string-->
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>102,156,170,207,208</value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>229</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>544,2627,8114,8115</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1205</value>
        </property>
      </object>
    </constructor-arg>

  </object>
  
	<object id="SqlServer-2.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
		<constructor-arg name="dbMetaData">
			<object type="Spring.Data.Common.DbMetadata">
				<constructor-arg name="productName" value="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0" />
				<constructor-arg name="assemblyName" value="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
				<constructor-arg name="connectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
				<constructor-arg name="commandType" value="System.Data.SqlClient.SqlCommand, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
				<constructor-arg name="parameterType" value="System.Data.SqlClient.SqlParameter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
				<constructor-arg name="dataAdapterType" value="System.Data.SqlClient.SqlDataAdapter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
				<constructor-arg name="commandBuilderType" value="System.Data.SqlClient.SqlCommandBuilder, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
				<constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
				<constructor-arg name="parameterDbType" value="System.Data.SqlDbType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
				<constructor-arg name="parameterDbTypeProperty" value="SqlDbType"/>
				<constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
				<constructor-arg name="parameterNamePrefix" value="@"/>
				<constructor-arg name="exceptionType" value="System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
				<constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>     
				<constructor-arg name="bindByName" value="true"/>
				<!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
				<constructor-arg name="errorCodeExceptionExpression" value="Errors[0].Number.ToString()"/>
        
        <!-- TODO select form system db all errors that have 'incorrect syntax' at the start of the error string-->
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>102,156,170,207,208</value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>229</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>544,2627,8114,8115</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1205</value>
        </property>
			</object>
		</constructor-arg>

	</object>

  <object id="SqlServer-4.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Microsoft SQL Server, provider V4.0.0.0 in framework .NET V4.0" />
        <constructor-arg name="assemblyName" value="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="connectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandType" value="System.Data.SqlClient.SqlCommand, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="parameterType" value="System.Data.SqlClient.SqlParameter, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="dataAdapterType" value="System.Data.SqlClient.SqlDataAdapter, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandBuilderType" value="System.Data.SqlClient.SqlCommandBuilder, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="System.Data.SqlDbType, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="parameterDbTypeProperty" value="SqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="System.Data.SqlClient.SqlException, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].Number.ToString()"/>

        <!-- TODO select form system db all errors that have 'incorrect syntax' at the start of the error string-->
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>102,156,170,207,208</value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>229</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>544,2627,8114,8115</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1205</value>
        </property>
      </object>
    </constructor-arg>

  </object>

  <alias name="SqlServer-2.0" alias="System.Data.SqlClient"/>

  
  <!-- SQL SERVER COMPACT EDITION -->

  <object id="SqlServerCe-3.1" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Microsoft SQL Server Compact Edition, provider V9.0.242.0" />
        <constructor-arg name="assemblyName" value="System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="connectionType" value="System.Data.SqlServerCe.SqlCeConnection, System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="commandType" value="System.Data.SqlServerCe.SqlCeCommand, System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="parameterType" value="System.Data.SqlServerCe.SqlCeParameter, System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="dataAdapterType" value="System.Data.SqlServerCe.SqlCeDataAdapter, System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="commandBuilderType" value="System.Data.SqlServerCe.SqlCeCommandBuilder, System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="not supported"/>
        <constructor-arg name="parameterDbType" value="System.Data.SqlDbType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="parameterDbTypeProperty" value="SqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="System.Data.SqlServerCe.SqlCeException, System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError.ToString()"/>
        <!-- TODO select form system db all errors that have 'incorrect syntax' at the start of the error string-->
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value></value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="SqlServerCe-3.5.1" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        
        <constructor-arg name="productName" value="Microsoft SQL Server Compact Edition, provider V3.5.1.0" />
        <constructor-arg name="assemblyName" value="System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="connectionType" value="System.Data.SqlServerCe.SqlCeConnection, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="commandType" value="System.Data.SqlServerCe.SqlCeCommand, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="parameterType" value="System.Data.SqlServerCe.SqlCeParameter, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="dataAdapterType" value="System.Data.SqlServerCe.SqlCeDataAdapter, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="commandBuilderType" value="System.Data.SqlServerCe.SqlCeCommandBuilder, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="not supported"/>
        <constructor-arg name="parameterDbType" value="System.Data.SqlDbType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="parameterDbTypeProperty" value="SqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="System.Data.SqlServerCe.SqlCeException, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError.ToString()"/>
        <!-- TODO select form system db all errors that have 'incorrect syntax' at the start of the error string-->
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value></value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <alias name="SqlServerCe-3.5.1" alias="System.Data.SqlServerCe"/>

  
  <!-- OLE DB -->

  <object id="OleDb-1.1" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="OleDb, provider V1.0.5000.0 in framework .NET V1.1"/>
        <constructor-arg name="assemblyName" value="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="connectionType" value="System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandType" value="System.Data.OleDb.OleDbCommand, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterType" value="System.Data.OleDb.OleDbParameter, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="dataAdapterType" value="System.Data.OleDb.OleDbDataAdapter, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderType" value="System.Data.OleDb.OleDbCommandBuilder, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="System.Data.OleDb.OleDbType, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterDbTypeProperty" value="OleDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="System.Data.OleDb.OleDbException, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="false"/>        
        <constructor-arg name="bindByName" value="false"/>
        <!-- TODO should parse out high/low values in the native error...yuk!-->
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError.ToString()"/>

        <!-- TODO where is the definitive list of the error.  Anyway, until parse out high low error there isn't any
             exception mapping yet for this provider. 
         -->
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>156,170,207,208</value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>229</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>2627,8114,8115</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1205</value>
        </property>
      </object>
    </constructor-arg>
  </object>
  
  <object id="OleDb-2.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="OleDb, provider V2.0.0.0 in framework .NET V2"/>
        <constructor-arg name="assemblyName" value="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="connectionType" value="System.Data.OleDb.OleDbConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>        
        <constructor-arg name="commandType" value="System.Data.OleDb.OleDbCommand, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterType" value="System.Data.OleDb.OleDbParameter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="dataAdapterType" value="System.Data.OleDb.OleDbDataAdapter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderType" value="System.Data.OleDb.OleDbCommandBuilder, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="System.Data.OleDb.OleDbType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterDbTypeProperty" value="OleDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="System.Data.OleDb.OleDbException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="false"/>        
        <constructor-arg name="bindByName" value="false"/>
        <!-- TODO should parse out high/low values in the native error...yuk!-->
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError.ToString()"/>

        <!-- TODO where is the definitive list of the error.  Anyway, until parse out high low error there isn't any
             exception mapping yet for this provider. 
         -->
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>156,170,207,208</value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>229</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>2627,8114,8115</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1205</value>
        </property>
      </object>
    </constructor-arg>

  </object>

  <object id="OleDb-4.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="OleDb, provider V4.0.0.0 in framework .NET V4"/>
        <constructor-arg name="assemblyName" value="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="connectionType" value="System.Data.OleDb.OleDbConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandType" value="System.Data.OleDb.OleDbCommand, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterType" value="System.Data.OleDb.OleDbParameter, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="dataAdapterType" value="System.Data.OleDb.OleDbDataAdapter, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderType" value="System.Data.OleDb.OleDbCommandBuilder, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="System.Data.OleDb.OleDbType, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterDbTypeProperty" value="OleDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="System.Data.OleDb.OleDbException, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="false"/>
        <constructor-arg name="bindByName" value="false"/>
        <!-- TODO should parse out high/low values in the native error...yuk!-->
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError.ToString()"/>

        <!-- TODO where is the definitive list of the error.  Anyway, until parse out high low error there isn't any
             exception mapping yet for this provider. 
         -->
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>156,170,207,208</value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>229</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>2627,8114,8115</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1205</value>
        </property>
      </object>
    </constructor-arg>

  </object>

  <alias name="OleDb-2.0" alias="System.Data.OleDb"/>


  <!-- ORACLE -->
  
  <object id="OracleClient-2.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Oracle, Microsoft provider V2.0.0.0"  />
        <constructor-arg name="assemblyName" value="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="connectionType" value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandType" value="System.Data.OracleClient.OracleCommand, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="parameterType" value="System.Data.OracleClient.OracleParameter, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="dataAdapterType" value="System.Data.OracleClient.OracleDataAdapter, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandBuilderType" value="System.Data.OracleClient.OracleCommandBuilder, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="System.Data.OracleClient.OracleType, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="parameterDbTypeProperty" value="OracleType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="System.Data.OracleClient.OracleException, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Code.ToString()"/>

        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>900,903,904,917,936,942,17006</value>
        </property>
        <property name="ErrorCodes.InvalidResultSetAccessCodes">
          <value>17003</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>17002,17447</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>1,1400,1722,2291,2292</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>54</value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>8177</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>60</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <alias name="OracleClient-2.0" alias="System.Data.OracleClient"/>

  <object id="OracleODP-2.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Oracle, Oracle provider V2.102.2.20"  />
        <constructor-arg name="assemblyName" value="Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="connectionType" value="Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandType" value="Oracle.DataAccess.Client.OracleCommand, Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="parameterType" value="Oracle.DataAccess.Client.OracleParameter, Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="dataAdapterType" value="Oracle.DataAccess.Client.OracleDataAdapter, Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandBuilderType" value="Oracle.DataAccess.Client.OracleCommandBuilder, Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="Oracle.DataAccess.Client.OracleDbType, Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="parameterDbTypeProperty" value="OracleDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="Oracle.DataAccess.Client.OracleException, Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="ErrorCode.ToString()"/>

        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>900,903,904,917,936,942,17006</value>
        </property>
        <property name="ErrorCodes.InvalidResultSetAccessCodes">
          <value>17003</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>17002,17447</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>1,1400,1722,2291,2292</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>54</value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>8177</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>60</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <alias name="OracleODP-2.0" alias="Oracle.DataAccess.Client"/>

  <!-- 11g changed the property to get the exception error code from ErrorCode to Number -->

  <object id="OracleODP-11-2.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Oracle, Oracle provider V2.112.3.0"  />
        <constructor-arg name="assemblyName" value="Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="connectionType" value="Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandType" value="Oracle.DataAccess.Client.OracleCommand, Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="parameterType" value="Oracle.DataAccess.Client.OracleParameter, Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="dataAdapterType" value="Oracle.DataAccess.Client.OracleDataAdapter, Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandBuilderType" value="Oracle.DataAccess.Client.OracleCommandBuilder, Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="Oracle.DataAccess.Client.OracleDbType, Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="parameterDbTypeProperty" value="OracleDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="Oracle.DataAccess.Client.OracleException, Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>900,903,904,917,936,942,17006</value>
        </property>
        <property name="ErrorCodes.InvalidResultSetAccessCodes">
          <value>17003</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>17002,17447</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>1,1400,1722,2291,2292</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>54</value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>8177</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>60</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="OracleODP-11-4.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Oracle, Oracle provider V4.112.3.0"  />
        <constructor-arg name="assemblyName" value="Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="connectionType" value="Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandType" value="Oracle.DataAccess.Client.OracleCommand, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="parameterType" value="Oracle.DataAccess.Client.OracleParameter, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="dataAdapterType" value="Oracle.DataAccess.Client.OracleDataAdapter, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandBuilderType" value="Oracle.DataAccess.Client.OracleCommandBuilder, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="Oracle.DataAccess.Client.OracleDbType, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="parameterDbTypeProperty" value="OracleDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="Oracle.DataAccess.Client.OracleException, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>900,903,904,917,936,942,17006</value>
        </property>
        <property name="ErrorCodes.InvalidResultSetAccessCodes">
          <value>17003</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>17002,17447</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>1,1400,1722,2291,2292</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>54</value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>8177</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>60</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="OracleODP-12-2.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Oracle, Oracle provider V2.121.1.0"  />
        <constructor-arg name="assemblyName" value="Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="connectionType" value="Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandType" value="Oracle.DataAccess.Client.OracleCommand, Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="parameterType" value="Oracle.DataAccess.Client.OracleParameter, Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="dataAdapterType" value="Oracle.DataAccess.Client.OracleDataAdapter, Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandBuilderType" value="Oracle.DataAccess.Client.OracleCommandBuilder, Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="Oracle.DataAccess.Client.OracleDbType, Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="parameterDbTypeProperty" value="OracleDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="Oracle.DataAccess.Client.OracleException, Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>900,903,904,917,936,942,17006</value>
        </property>
        <property name="ErrorCodes.InvalidResultSetAccessCodes">
          <value>17003</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>17002,17447</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>1,1400,1722,2291,2292</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>54</value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>8177</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>60</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="OracleODP-12-4.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Oracle, Oracle provider V4.121.1.0"  />
        <constructor-arg name="assemblyName" value="Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="connectionType" value="Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandType" value="Oracle.DataAccess.Client.OracleCommand, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="parameterType" value="Oracle.DataAccess.Client.OracleParameter, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="dataAdapterType" value="Oracle.DataAccess.Client.OracleDataAdapter, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandBuilderType" value="Oracle.DataAccess.Client.OracleCommandBuilder, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="Oracle.DataAccess.Client.OracleDbType, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="parameterDbTypeProperty" value="OracleDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="Oracle.DataAccess.Client.OracleException, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>900,903,904,917,936,942,17006</value>
        </property>
        <property name="ErrorCodes.InvalidResultSetAccessCodes">
          <value>17003</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>17002,17447</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>1,1400,1722,2291,2292</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>54</value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>8177</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>60</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="OracleODP-Managed-12-4.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Oracle, Oracle Managed provider V4.121.1.0"  />
        <constructor-arg name="assemblyName" value="Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="connectionType" value="Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandType" value="Oracle.ManagedDataAccess.Client.OracleCommand, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="parameterType" value="Oracle.ManagedDataAccess.Client.OracleParameter, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="dataAdapterType" value="Oracle.ManagedDataAccess.Client.OracleDataAdapter, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandBuilderType" value="Oracle.ManagedDataAccess.Client.OracleCommandBuilder, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="Oracle.ManagedDataAccess.Client.OracleDbType, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="parameterDbTypeProperty" value="OracleDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="Oracle.ManagedDataAccess.Client.OracleException, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>900,903,904,917,936,942,17006</value>
        </property>
        <property name="ErrorCodes.InvalidResultSetAccessCodes">
          <value>17003</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>17002,17447</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>1,1400,1722,2291,2292</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>54</value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>8177</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>60</value>
        </property>
      </object>
    </constructor-arg>
  </object>



  <!-- My Sql -->
  
  <!-- Connector/NET 1.0 -->
  
  <object id="MySql" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="MySQL, MySQL provider 1.0.10.1"  />
        <constructor-arg name="assemblyName" value="MySql.Data, Version=1.0.10.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="connectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=1.0.10.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandType" value="MySql.Data.MySqlClient.MySqlCommand, MySql.Data, Version=1.0.10.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterType" value="MySql.Data.MySqlClient.MySqlParameter, MySql.Data, Version=1.0.10.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="dataAdapterType" value="MySql.Data.MySqlClient.MySqlDataAdapter, MySql.Data, Version=1.0.10.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderType" value="MySql.Data.MySqlClient.MySqlCommandBuilder, MySql.Data, Version=1.0.10.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="MySql.Data.MySqlClient.MySqlDbType, MySql.Data, Version=1.0.10.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterDbTypeProperty" value="MySqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="MySql.Data.MySqlClient.MySqlException, MySql.Data, Version=1.0.10.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value>1054,1064,1146</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>630,839,840,893,1062,1169,1215,1216,1217,1451,1452,1557</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>1205</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1213</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="MySql-1.0.9" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="MySQL, MySQL provider 1.0.9.0"  />
        <constructor-arg name="assemblyName" value="MySql.Data, Version=1.0.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="connectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=1.0.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandType" value="MySql.Data.MySqlClient.MySqlCommand, MySql.Data, Version=1.0.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterType" value="MySql.Data.MySqlClient.MySqlParameter, MySql.Data, Version=1.0.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="dataAdapterType" value="MySql.Data.MySqlClient.MySqlDataAdapter, MySql.Data, Version=1.0.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderType" value="MySql.Data.MySqlClient.MySqlCommandBuilder, MySql.Data, Version=1.0.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="MySql.Data.MySqlClient.MySqlDbType, MySql.Data, Version=1.0.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterDbTypeProperty" value="MySqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="MySql.Data.MySqlClient.MySqlException, MySql.Data, Version=1.0.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value>1054,1064,1146</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>630,839,840,893,1062,1169,1215,1216,1217,1451,1452,1557</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>1205</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1213</value>
        </property>
      </object>
    </constructor-arg>
  </object>


  <!-- Connector/NET 5.x (.NET 2.0 only) -->

  <object id="MySql-5.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="MySQL, MySQL provider 5.0.7.0"  />
        <constructor-arg name="assemblyName" value="MySql.Data, Version=5.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="connectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=5.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandType" value="MySql.Data.MySqlClient.MySqlCommand, MySql.Data, Version=5.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterType" value="MySql.Data.MySqlClient.MySqlParameter, MySql.Data, Version=5.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="dataAdapterType" value="MySql.Data.MySqlClient.MySqlDataAdapter, MySql.Data, Version=5.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderType" value="MySql.Data.MySqlClient.MySqlCommandBuilder, MySql.Data, Version=5.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="MySql.Data.MySqlClient.MySqlDbType, MySql.Data, Version=5.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterDbTypeProperty" value="MySqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="MySql.Data.MySqlClient.MySqlException, MySql.Data, Version=5.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value>1054,1064,1146</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>630,839,840,893,1062,1169,1215,1216,1217,1451,1452,1557</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>1205</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1213</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="MySql-5.0.8.1" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="MySQL, MySQL provider 5.0.8.1"  />
        <constructor-arg name="assemblyName" value="MySql.Data, Version=5.0.8.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="connectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=5.0.8.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandType" value="MySql.Data.MySqlClient.MySqlCommand, MySql.Data, Version=5.0.8.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterType" value="MySql.Data.MySqlClient.MySqlParameter, MySql.Data, Version=5.0.8.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="dataAdapterType" value="MySql.Data.MySqlClient.MySqlDataAdapter, MySql.Data, Version=5.0.8.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderType" value="MySql.Data.MySqlClient.MySqlCommandBuilder, MySql.Data, Version=5.0.8.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="MySql.Data.MySqlClient.MySqlDbType, MySql.Data, Version=5.0.8.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterDbTypeProperty" value="MySqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="MySql.Data.MySqlClient.MySqlException, MySql.Data, Version=5.0.8.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value>1054,1064,1146</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>630,839,840,893,1062,1169,1215,1216,1217,1451,1452,1557</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>1205</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1213</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="MySql-5.1" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="MySQL, MySQL provider 5.1.2.2"  />
        <constructor-arg name="assemblyName" value="MySql.Data, Version=5.1.2.2, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="connectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=5.1.2.2, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandType" value="MySql.Data.MySqlClient.MySqlCommand, MySql.Data, Version=5.1.2.2, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterType" value="MySql.Data.MySqlClient.MySqlParameter, MySql.Data, Version=5.1.2.2, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="dataAdapterType" value="MySql.Data.MySqlClient.MySqlDataAdapter, MySql.Data, Version=5.1.2.2, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderType" value="MySql.Data.MySqlClient.MySqlCommandBuilder, MySql.Data, Version=5.1.2.2, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="MySql.Data.MySqlClient.MySqlDbType, MySql.Data, Version=5.1.2.2, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterDbTypeProperty" value="MySqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="MySql.Data.MySqlClient.MySqlException, MySql.Data, Version=5.1.2.2, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value>1054,1064,1146</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>630,839,840,893,1062,1169,1215,1216,1217,1451,1452,1557</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>1205</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1213</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="MySql-5.1.4" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="MySQL, MySQL provider 5.1.4.0"  />
        <constructor-arg name="assemblyName" value="MySql.Data, Version=5.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="connectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=5.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandType" value="MySql.Data.MySqlClient.MySqlCommand, MySql.Data, Version=5.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterType" value="MySql.Data.MySqlClient.MySqlParameter, MySql.Data, Version=5.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="dataAdapterType" value="MySql.Data.MySqlClient.MySqlDataAdapter, MySql.Data, Version=5.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderType" value="MySql.Data.MySqlClient.MySqlCommandBuilder, MySql.Data, Version=5.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="MySql.Data.MySqlClient.MySqlDbType, MySql.Data, Version=5.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterDbTypeProperty" value="MySqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="MySql.Data.MySqlClient.MySqlException, MySql.Data, Version=5.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value>1054,1064,1146</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>630,839,840,893,1062,1169,1215,1216,1217,1451,1452,1557</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>1205</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1213</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="MySql-5.2.3" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="MySQL, MySQL provider 5.2.3.0"  />
        <constructor-arg name="assemblyName" value="MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="connectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandType" value="MySql.Data.MySqlClient.MySqlCommand, MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterType" value="MySql.Data.MySqlClient.MySqlParameter, MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="dataAdapterType" value="MySql.Data.MySqlClient.MySqlDataAdapter, MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderType" value="MySql.Data.MySqlClient.MySqlCommandBuilder, MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="MySql.Data.MySqlClient.MySqlDbType, MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterDbTypeProperty" value="MySqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="MySql.Data.MySqlClient.MySqlException, MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value>1054,1064,1146</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>630,839,840,893,1062,1169,1215,1216,1217,1451,1452,1557</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>1205</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1213</value>
        </property>
      </object>
    </constructor-arg>
  </object>


  <!-- Connector/NET 6.x (.NET 2.0 only) -->
  
  <object id="MySql-6.1.3" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="MySQL, MySQL provider 6.1.3.0"  />
        <constructor-arg name="assemblyName" value="MySql.Data, Version=6.1.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="connectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.1.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandType" value="MySql.Data.MySqlClient.MySqlCommand, MySql.Data, Version=6.1.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterType" value="MySql.Data.MySqlClient.MySqlParameter, MySql.Data, Version=6.1.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="dataAdapterType" value="MySql.Data.MySqlClient.MySqlDataAdapter, MySql.Data, Version=6.1.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderType" value="MySql.Data.MySqlClient.MySqlCommandBuilder, MySql.Data, Version=6.1.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="MySql.Data.MySqlClient.MySqlDbType, MySql.Data, Version=6.1.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterDbTypeProperty" value="MySqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="MySql.Data.MySqlClient.MySqlException, MySql.Data, Version=6.1.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value>1054,1064,1146</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>630,839,840,893,1062,1169,1215,1216,1217,1451,1452,1557</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>1205</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1213</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="MySql-6.2.2" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="MySQL, MySQL provider 6.2.2.0"  />
        <constructor-arg name="assemblyName" value="MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="connectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandType" value="MySql.Data.MySqlClient.MySqlCommand, MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterType" value="MySql.Data.MySqlClient.MySqlParameter, MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="dataAdapterType" value="MySql.Data.MySqlClient.MySqlDataAdapter, MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderType" value="MySql.Data.MySqlClient.MySqlCommandBuilder, MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="MySql.Data.MySqlClient.MySqlDbType, MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="parameterDbTypeProperty" value="MySqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="MySql.Data.MySqlClient.MySqlException, MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value>1054,1064,1146</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>630,839,840,893,1062,1169,1215,1216,1217,1451,1452,1557</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>1205</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1213</value>
        </property>
      </object>
    </constructor-arg>
  </object>
  
  <alias name="MySql-6.2.2" alias="MySql.Data.MySqlClient"/>


  <object id="Npgsql-1.0" type="Spring.Data.Common.DbProvider, Spring.Data"  singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata, Spring.Data">
        <constructor-arg name="productName" value="Npgsql"  />
        <constructor-arg name="assemblyName" value="Npgsql, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="connectionType" value="Npgsql.NpgsqlConnection, Npgsql, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="commandType" value="Npgsql.NpgsqlCommand, Npgsql, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="parameterType" value="Npgsql.NpgsqlParameter, Npgsql, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="dataAdapterType" value="Npgsql.NpgsqlDataAdapter, Npgsql, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="commandBuilderType" value="Npgsql.NpgsqlCommandBuilder, Npgsql, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="NpgsqlTypes.NpgsqlDbType, Npgsql, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="parameterDbTypeProperty" value="NpgsqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="Npgsql.NpgsqlException, Npgsql, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].Code"/>
        <!-- error codes taken from http://www.postgresql.org/docs/8.1/static/errcodes-appendix.html -->
        <property name="ErrorCodes.badSqlGrammarCodes">
          <value>03000,42000,42601,42602,42622,42804,42P01</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>53000,53100,53200,53300</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>23000,23502,23503,23505,23514</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>55P03</value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>40001</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>40P01</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="Npgsql-2.0-beta1" type="Spring.Data.Common.DbProvider, Spring.Data"  singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata, Spring.Data">
        <constructor-arg name="productName" value="Npgsql"  />
        <constructor-arg name="assemblyName" value="Npgsql, Version=1.98.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="connectionType" value="Npgsql.NpgsqlConnection, Npgsql, Version=1.98.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="commandType" value="Npgsql.NpgsqlCommand, Npgsql, Version=1.98.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="parameterType" value="Npgsql.NpgsqlParameter, Npgsql, Version=1.98.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="dataAdapterType" value="Npgsql.NpgsqlDataAdapter, Npgsql, Version=1.98.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="commandBuilderType" value="Npgsql.NpgsqlCommandBuilder, Npgsql, Version=1.98.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="NpgsqlTypes.NpgsqlDbType, Npgsql, Version=1.98.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="parameterDbTypeProperty" value="NpgsqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="Npgsql.NpgsqlException, Npgsql, Version=1.98.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].Code"/>
        <!-- error codes taken from http://www.postgresql.org/docs/8.1/static/errcodes-appendix.html -->
        <property name="ErrorCodes.badSqlGrammarCodes">
          <value>03000,42000,42601,42602,42622,42804,42P01</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>53000,53100,53200,53300</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>23000,23502,23503,23505,23514</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>55P03</value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>40001</value>
        </property>                  
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>40P01</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="Npgsql-2.0" type="Spring.Data.Common.DbProvider, Spring.Data"  singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata, Spring.Data">
        <constructor-arg name="productName" value="Npgsql"  />
        <constructor-arg name="assemblyName" value="Npgsql, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="connectionType" value="Npgsql.NpgsqlConnection, Npgsql, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="commandType" value="Npgsql.NpgsqlCommand, Npgsql, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="parameterType" value="Npgsql.NpgsqlParameter, Npgsql, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="dataAdapterType" value="Npgsql.NpgsqlDataAdapter, Npgsql, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="commandBuilderType" value="Npgsql.NpgsqlCommandBuilder, Npgsql, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="NpgsqlTypes.NpgsqlDbType, Npgsql, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="parameterDbTypeProperty" value="NpgsqlDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="Npgsql.NpgsqlException, Npgsql, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].Code"/>
        <!-- error codes taken from http://www.postgresql.org/docs/8.1/static/errcodes-appendix.html -->
        <property name="ErrorCodes.badSqlGrammarCodes">
          <value>03000,42000,42601,42602,42622,42804,42P01</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>53000,53100,53200,53300</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>23000,23502,23503,23505,23514</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>55P03</value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>40001</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>40P01</value>
        </property>
      </object>
    </constructor-arg>
  </object>
  
  
  <!-- DB2 9.0.0 for .NET 1.1 -->
  <object id="DB2-9.0.0-1.1" type="Spring.Data.Common.DbProvider, Spring.Data"  singleton="false">
    <constructor-arg name="DbMetaData">
      <object type="Spring.Data.Common.DbMetadata, Spring.Data">
        <constructor-arg name="productName" value="IBM.Data.DB2 .NET 1.1 Version 9.0.0.1"/>
        <constructor-arg name="assemblyName" value="IBM.Data.DB2, Version=9.0.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="connectionType" value="IBM.Data.DB2.DB2Connection, IBM.Data.DB2, Version=9.0.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandType" value="IBM.Data.DB2.DB2Command, IBM.Data.DB2, Version=9.0.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="parameterType" value="IBM.Data.DB2.DB2Parameter, IBM.Data.DB2, Version=9.0.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="dataAdapterType" value="IBM.Data.DB2.DB2DataAdapter, IBM.Data.DB2, Version=9.0.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandBuilderType" value="IBM.Data.DB2.DB2CommandBuilder, IBM.Data.DB2, Version=9.0.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="IBM.Data.DB2.DB2Type, IBM.Data.DB2, Version=9.0.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="parameterDbTypeProperty" value="DB2Type"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="IBM.Data.DB2.DB2Exception, IBM.Data.DB2, Version=9.0.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError"/>
        <!-- error codes taken from http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/rzala/rzalaco.htm and 
             from Spring.Java sql-error-codes.xml -->

        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>-007,-029,-097,-104,-109,-115,-128,-199,-204,-206,-301,-408,-441,-491</value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>-551,-552</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>-803</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>-407,-530,-531,-532,-543,-544,-545,-603,-667,-803</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>-904,-971</value>
        </property>
        <property name="ErrorCodes.TransientAccessResourceFailureCodes">
          <value>-1035,-1218,-30080,-30081</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>-911,-913</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <!-- DB2 9.0.0 for .NET 2.0 -->
  <object id="DB2-9.0.0-2.0" type="Spring.Data.Common.DbProvider, Spring.Data"  singleton="false">
    <constructor-arg name="DbMetaData">
      <object type="Spring.Data.Common.DbMetadata, Spring.Data">
        <constructor-arg name="productName" value="IBM.Data.DB2"/>
        <constructor-arg name="assemblyName" value="IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="connectionType" value="IBM.Data.DB2.DB2Connection, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandType" value="IBM.Data.DB2.DB2Command, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="parameterType" value="IBM.Data.DB2.DB2Parameter, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="dataAdapterType" value="IBM.Data.DB2.DB2DataAdapter, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandBuilderType" value="IBM.Data.DB2.DB2CommandBuilder, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="IBM.Data.DB2.DB2Type, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="parameterDbTypeProperty" value="DB2Type"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="IBM.Data.DB2.DB2Exception, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError"/>
        <!-- error codes taken from http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/rzala/rzalaco.htm and 
             from Spring.Java sql-error-codes.xml -->

        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>-007,-029,-097,-104,-109,-115,-128,-199,-204,-206,-301,-408,-441,-491</value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>-551,-552</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>-803</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>-407,-530,-531,-532,-543,-544,-545,-603,-667,-803</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>-904,-971</value>
        </property>
        <property name="ErrorCodes.TransientAccessResourceFailureCodes">
          <value>-1035,-1218,-30080,-30081</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>-911,-913</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <alias name="DB2-9.0.0-2.0" alias="IBM.Data.DB2"/>

  
  <!-- DB2 9.1.0 for .NET 1.1 -->
  <object id="DB2-9.1.0-1.1" type="Spring.Data.Common.DbProvider, Spring.Data"  singleton="false">
    <constructor-arg name="DbMetaData">
      <object type="Spring.Data.Common.DbMetadata, Spring.Data">
        <constructor-arg name="productName" value="IBM.Data.DB2 .NET 1.1 Version 9.1.0.1"/>
        <constructor-arg name="assemblyName" value="IBM.Data.DB2, Version=9.1.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="connectionType" value="IBM.Data.DB2.DB2Connection, IBM.Data.DB2, Version=9.1.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandType" value="IBM.Data.DB2.DB2Command, IBM.Data.DB2, Version=9.1.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="parameterType" value="IBM.Data.DB2.DB2Parameter, IBM.Data.DB2, Version=9.1.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="dataAdapterType" value="IBM.Data.DB2.DB2DataAdapter, IBM.Data.DB2, Version=9.1.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandBuilderType" value="IBM.Data.DB2.DB2CommandBuilder, IBM.Data.DB2, Version=9.1.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="IBM.Data.DB2.DB2Type, IBM.Data.DB2, Version=9.1.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="parameterDbTypeProperty" value="DB2Type"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="IBM.Data.DB2.DB2Exception, IBM.Data.DB2, Version=9.1.0.1, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError"/>
        <!-- error codes taken from http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/rzala/rzalaco.htm and 
             from Spring.Java sql-error-codes.xml -->


        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>-007,-029,-097,-104,-109,-115,-128,-199,-204,-206,-301,-408,-441,-491</value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>-551,-552</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>-803</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>-407,-530,-531,-532,-543,-544,-545,-603,-667,-803</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>-904,-971</value>
        </property>
        <property name="ErrorCodes.TransientAccessResourceFailureCodes">
          <value>-1035,-1218,-30080,-30081</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>-911,-913</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <!-- DB2 9.1.0 for .NET 2.0 -->
  <object id="DB2-9.1.0.2" type="Spring.Data.Common.DbProvider, Spring.Data"  singleton="false">
    <constructor-arg name="DbMetaData">
      <object type="Spring.Data.Common.DbMetadata, Spring.Data">
        <constructor-arg name="productName" value="IBM.Data.DB2"/>
        <constructor-arg name="assemblyName" value="IBM.Data.DB2, Version=9.1.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="connectionType" value="IBM.Data.DB2.DB2Connection, IBM.Data.DB2, Version=9.1.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandType" value="IBM.Data.DB2.DB2Command, IBM.Data.DB2, Version=9.1.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="parameterType" value="IBM.Data.DB2.DB2Parameter, IBM.Data.DB2, Version=9.1.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="dataAdapterType" value="IBM.Data.DB2.DB2DataAdapter, IBM.Data.DB2, Version=9.1.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandBuilderType" value="IBM.Data.DB2.DB2CommandBuilder, IBM.Data.DB2, Version=9.1.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="IBM.Data.DB2.DB2Type, IBM.Data.DB2, Version=9.1.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="parameterDbTypeProperty" value="DB2Type"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="IBM.Data.DB2.DB2Exception, IBM.Data.DB2, Version=9.1.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError"/>
        <!-- error codes taken from http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/rzala/rzalaco.htm and 
             from Spring.Java sql-error-codes.xml -->


        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>-007,-029,-097,-104,-109,-115,-128,-199,-204,-206,-301,-408,-441,-491</value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>-551,-552</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>-803</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>-407,-530,-531,-532,-543,-544,-545,-603,-667,-803</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>-904,-971</value>
        </property>
        <property name="ErrorCodes.TransientAccessResourceFailureCodes">
          <value>-1035,-1218,-30080,-30081</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>-911,-913</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <alias name="DB2-9.1.0.2" alias="IBM.Data.DB2.9.1.0"/>


  <!-- iDB2 10.0.0.0 for .NET 2.0 -->
  <object id="iDB2-10.0.0.0" type="Spring.Data.Common.DbProvider, Spring.Data"  singleton="false">
    <constructor-arg name="DbMetaData">
      <object type="Spring.Data.Common.DbMetadata, Spring.Data">
        <constructor-arg name="productName" value="IBM.Data.DB2.iSeries"/>
        <constructor-arg name="assemblyName" value="IBM.Data.DB2.iSeries, Version=10.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
        <constructor-arg name="connectionType" value="IBM.Data.DB2.iSeries.iDB2Connection, IBM.Data.DB2.iSeries, Version=10.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
        <constructor-arg name="commandType" value="IBM.Data.DB2.iSeries.iDB2Command, IBM.Data.DB2.iSeries, Version=10.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
        <constructor-arg name="parameterType" value="IBM.Data.DB2.iSeries.iDB2Parameter, IBM.Data.DB2.iSeries, Version=10.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
        <constructor-arg name="dataAdapterType" value="IBM.Data.DB2.iSeries.iDB2DataAdapter, IBM.Data.DB2.iSeries, Version=10.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
        <constructor-arg name="commandBuilderType" value="IBM.Data.DB2.iSeries.iDB2CommandBuilder, IBM.Data.DB2.iSeries, Version=10.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="IBM.Data.DB2.iSeries.iDB2DbType, IBM.Data.DB2.iSeries, Version=10.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
        <constructor-arg name="parameterDbTypeProperty" value="iDB2DbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="IBM.Data.DB2.iSeries.iDB2SQLErrorException, IBM.Data.DB2.iSeries, Version=10.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="MessageCode"/>
        <!-- error codes taken from http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/rzala/rzalaco.htm and 
             from Spring.Java sql-error-codes.xml -->

        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>-007,-029,-097,-104,-109,-115,-128,-199,-204,-206,-301,-408,-441,-491</value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>-551,-552</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>-803</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>-407,-530,-531,-532,-543,-544,-545,-603,-667,-803</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>-904,-971</value>
        </property>
        <property name="ErrorCodes.TransientAccessResourceFailureCodes">
          <value>-1035,-1218,-30080,-30081</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>-911,-913</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  
  <!-- Sqlite + ADO Net provider for sqlite -->
  <!-- Driver can be found at : http://sourceforge.net/projects/sqlite-dotnet2 -->
  <!-- Reference for error codes : http://www.sqlite.org/capi3.html -->
  <object id="SQLite-1.0.43" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="SQLite"/>
        <constructor-arg name="assemblyName" value="System.Data.SQLite, Version=1.0.43.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="connectionType" value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.43.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandType" value="System.Data.SQLite.SQLiteCommand, System.Data.SQLite, Version=1.0.43.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterType" value="System.Data.SQLite.SQLiteParameter, System.Data.SQLite, Version=1.0.43.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="dataAdapterType" value="System.Data.SQLite.SQLiteDataAdapter , System.Data.SQLite, Version=1.0.43.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderType" value="System.Data.SQLite.SQLiteCommandBuilder, System.Data.SQLite, Version=1.0.43.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="not supported"/>
        <constructor-arg name="parameterDbType" value="System.Data.SQLite.TypeAffinity, System.Data.SQLite, Version=1.0.43.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterDbTypeProperty" value="DbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="System.Data.SQLite.SQLiteException, System.Data.SQLite, Version=1.0.43.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>15</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>5,6</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <!-- Sqlite + ADO Net provider for sqlite -->
  <!-- Driver can be found at : http://sourceforge.net/projects/sqlite-dotnet2 -->
  <!-- Reference for error codes : http://www.sqlite.org/capi3.html -->
  <object id="SQLite-1.0.44" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="SQLite"/>
        <constructor-arg name="assemblyName" value="System.Data.SQLite, Version=1.0.44.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="connectionType" value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.44.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandType" value="System.Data.SQLite.SQLiteCommand, System.Data.SQLite, Version=1.0.44.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterType" value="System.Data.SQLite.SQLiteParameter, System.Data.SQLite, Version=1.0.44.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="dataAdapterType" value="System.Data.SQLite.SQLiteDataAdapter , System.Data.SQLite, Version=1.0.44.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderType" value="System.Data.SQLite.SQLiteCommandBuilder, System.Data.SQLite, Version=1.0.44.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="not supported"/>
        <constructor-arg name="parameterDbType" value="System.Data.SQLite.TypeAffinity, System.Data.SQLite, Version=1.0.44.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterDbTypeProperty" value="DbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="System.Data.SQLite.SQLiteException, System.Data.SQLite, Version=1.0.44.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>        
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>15</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>5,6</value>
        </property>
      </object>
    </constructor-arg>
  </object>
  
  <!-- Sqlite + ADO Net provider for sqlite -->
  <!-- Driver can be found at : http://sourceforge.net/projects/sqlite-dotnet2 -->
  <!-- Reference for error codes : http://www.sqlite.org/capi3.html -->
  <object id="SQLite-1.0.47" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="SQLite"/>
        <constructor-arg name="assemblyName" value="System.Data.SQLite, Version=1.0.47.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="connectionType" value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.47.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandType" value="System.Data.SQLite.SQLiteCommand, System.Data.SQLite, Version=1.0.47.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterType" value="System.Data.SQLite.SQLiteParameter, System.Data.SQLite, Version=1.0.47.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="dataAdapterType" value="System.Data.SQLite.SQLiteDataAdapter , System.Data.SQLite, Version=1.0.47.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderType" value="System.Data.SQLite.SQLiteCommandBuilder, System.Data.SQLite, Version=1.0.47.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="not supported"/>
        <constructor-arg name="parameterDbType" value="System.Data.SQLite.TypeAffinity, System.Data.SQLite, Version=1.0.47.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterDbTypeProperty" value="DbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="System.Data.SQLite.SQLiteException, System.Data.SQLite, Version=1.0.47.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>15</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>5,6</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <!-- Sqlite + ADO Net provider for sqlite -->
  <!-- Driver can be found at : http://sourceforge.net/projects/sqlite-dotnet2 -->
  <!-- Reference for error codes : http://www.sqlite.org/capi3.html -->
  <object id="SQLite-1.0.56" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="SQLite"/>
        <constructor-arg name="assemblyName" value="System.Data.SQLite, Version=1.0.56.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="connectionType" value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.56.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandType" value="System.Data.SQLite.SQLiteCommand, System.Data.SQLite, Version=1.0.56.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterType" value="System.Data.SQLite.SQLiteParameter, System.Data.SQLite, Version=1.0.56.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="dataAdapterType" value="System.Data.SQLite.SQLiteDataAdapter , System.Data.SQLite, Version=1.0.56.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderType" value="System.Data.SQLite.SQLiteCommandBuilder, System.Data.SQLite, Version=1.0.56.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="not supported"/>
        <constructor-arg name="parameterDbType" value="System.Data.SQLite.TypeAffinity, System.Data.SQLite, Version=1.0.56.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterDbTypeProperty" value="DbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="System.Data.SQLite.SQLiteException, System.Data.SQLite, Version=1.0.56.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="Number.ToString()"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>15</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>5,6</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <!-- Sqlite + ADO Net provider for sqlite -->
  <!-- Driver can be found at : http://sourceforge.net/projects/sqlite-dotnet2 -->
  <!-- Reference for error codes : http://www.sqlite.org/capi3.html -->
  <object id="SQLite-1.0.65" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="SQLite"/>
        <constructor-arg name="assemblyName" value="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="connectionType" value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandType" value="System.Data.SQLite.SQLiteCommand, System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterType" value="System.Data.SQLite.SQLiteParameter, System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="dataAdapterType" value="System.Data.SQLite.SQLiteDataAdapter , System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderType" value="System.Data.SQLite.SQLiteCommandBuilder, System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="not supported"/>
        <constructor-arg name="parameterDbType" value="System.Data.SQLite.TypeAffinity, System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterDbTypeProperty" value="DbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="System.Data.SQLite.SQLiteException, System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="ErrorCode.ToString('D')"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>15</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>5,6</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="SQLite-1.0.66" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="SQLite"/>
        <constructor-arg name="assemblyName" value="System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="connectionType" value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandType" value="System.Data.SQLite.SQLiteCommand, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterType" value="System.Data.SQLite.SQLiteParameter, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="dataAdapterType" value="System.Data.SQLite.SQLiteDataAdapter , System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderType" value="System.Data.SQLite.SQLiteCommandBuilder, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="not supported"/>
        <constructor-arg name="parameterDbType" value="System.Data.SQLite.TypeAffinity, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterDbTypeProperty" value="DbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="System.Data.SQLite.SQLiteException, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="ErrorCode.ToString('D')"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>15</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>5,6</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <!-- from http://sqlite.phxsoftware.com/ -->
  <object id="SQLite-1.0.72" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="SQLite"/>
        <constructor-arg name="assemblyName" value="System.Data.SQLite, Version=1.0.72.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="connectionType" value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.72.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandType" value="System.Data.SQLite.SQLiteCommand, System.Data.SQLite, Version=1.0.72.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterType" value="System.Data.SQLite.SQLiteParameter, System.Data.SQLite, Version=1.0.72.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="dataAdapterType" value="System.Data.SQLite.SQLiteDataAdapter , System.Data.SQLite, Version=1.0.72.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderType" value="System.Data.SQLite.SQLiteCommandBuilder, System.Data.SQLite, Version=1.0.72.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="not supported"/>
        <constructor-arg name="parameterDbType" value="System.Data.SQLite.TypeAffinity, System.Data.SQLite, Version=1.0.72.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterDbTypeProperty" value="DbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="System.Data.SQLite.SQLiteException, System.Data.SQLite, Version=1.0.72.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="ErrorCode.ToString('D')"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>15</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>5,6</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <!-- 
  from http://system.data.sqlite.org
   * NuGet distributions: http://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki#q5
   * NuGet page: http://www.nuget.org/packages/System.Data.SQLite
   * Error code docs: http://www.sqlite.org/capi3ref.html#SQLITE_ABORT
  -->
  <object id="SQLite-1.0.80" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="SQLite"/>
        <constructor-arg name="assemblyName" value="System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="connectionType" value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandType" value="System.Data.SQLite.SQLiteCommand, System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterType" value="System.Data.SQLite.SQLiteParameter, System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="dataAdapterType" value="System.Data.SQLite.SQLiteDataAdapter , System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderType" value="System.Data.SQLite.SQLiteCommandBuilder, System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="not supported"/>
        <constructor-arg name="parameterDbType" value="System.Data.SQLite.TypeAffinity, System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="parameterDbTypeProperty" value="DbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value=":"/>
        <constructor-arg name="exceptionType" value="System.Data.SQLite.SQLiteException, System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
             obtaining error codes-->
        <constructor-arg name="errorCodeExceptionExpression" value="ErrorCode.ToString('D')"/>

        <property name="ErrorCodes.badSqlGrammarCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>1</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value></value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>15</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>5,6</value>
        </property>
      </object>
    </constructor-arg>

  </object>

  <alias name="SQLite-1.0.80" alias="System.Data.SQLite"/>
  
  <!-- Firebird -->
  
  <object id="Firebird-2.1" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false"> 
    <constructor-arg name="dbMetaData"> 
      <object type="Spring.Data.Common.DbMetadata"> 
        <constructor-arg name="productName" value="Firebird Server, provider V2.1.0.0 in framework .NET V2.0" /> 
        <constructor-arg name="assemblyName" value="FirebirdSql.Data.FirebirdClient, Version=2.1.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"/> 
        <constructor-arg name="connectionType" value="FirebirdSql.Data.FirebirdClient.FbConnection, FirebirdSql.Data.FirebirdClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"/> 
        <constructor-arg name="commandType" value="FirebirdSql.Data.FirebirdClient.FbCommand, FirebirdSql.Data.FirebirdClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"/> 
        <constructor-arg name="parameterType" value="FirebirdSql.Data.FirebirdClient.FbParameter, FirebirdSql.Data.FirebirdClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"/> 
        <constructor-arg name="dataAdapterType" value="FirebirdSql.Data.FirebirdClient.FbDataAdapter, FirebirdSql.Data.FirebirdClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"/> 
        <constructor-arg name="commandBuilderType" value="FirebirdSql.Data.FirebirdClient.FbCommandBuilder, FirebirdSql.Data.FirebirdClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"/> 
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/> 
        <constructor-arg name="parameterDbType" value="FirebirdSql.Data.FirebirdClient.FbDbType, FirebirdSql.Data.FirebirdClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"/> 
        <constructor-arg name="parameterDbTypeProperty" value="FbDbType"/> 
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/> 
        <constructor-arg name="parameterNamePrefix" value="@"/> 
        <constructor-arg name="exceptionType" value="FirebirdSql.Data.FirebirdClient.FbException, FirebirdSql.Data.FirebirdClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"/> 
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/> 
        <constructor-arg name="useParameterPrefixInSql" value="true"/> 
        <constructor-arg name="bindByName" value="true"/> 
        <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for 
             obtaining error codes--> 
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].Number.ToString()"/> 

        <!-- TODO select form system db all errors that have 'incorrect syntax' at the start of the error string--> 
        <property name="ErrorCodes.BadSqlGrammarCodes"> 
          <value>-104</value> 
        </property> 
        <property name="ErrorCodes.PermissionDeniedCodes"> 
          <value>-901</value> 
        </property> 
        <property name="ErrorCodes.DataIntegrityViolationCodes"> 
          <value>-530</value> 
        </property> 
        <property name="ErrorCodes.DeadlockLoserCodes"> 
          <value>-913</value> 
        </property> 
      </object> 
    </constructor-arg> 
  </object> 

  <alias name="Firebird-2.1" alias="FirebirdSql.Data.FirebirdClient"/>


  <!-- Sybase -->

  <object id="SybaseAse-12" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Sybase Adaptive Server Enterprise 12.5, provider V1.1.411 in framework .NET V1.1"/>
        <constructor-arg name="assemblyName" value="Sybase.Data.AseClient, Version=1.1.411.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7" />
        <constructor-arg name="connectionType" value="Sybase.Data.AseClient.AseConnection, Sybase.Data.AseClient, Version=1.1.411.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="commandType" value="Sybase.Data.AseClient.AseCommand, Sybase.Data.AseClient, Version=1.1.411.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="parameterType" value="Sybase.Data.AseClient.AseParameter, Sybase.Data.AseClient, Version=1.1.411.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="dataAdapterType" value="Sybase.Data.AseClient.AseDataAdapter, Sybase.Data.AseClient, Version=1.1.411.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="commandBuilderType" value="Sybase.Data.AseClient.AseCommandBuilder, Sybase.Data.AseClient, Version=1.1.411.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="Sybase.Data.AseClient.AseDbType, Sybase.Data.AseClient, Version=1.1.411.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="parameterDbTypeProperty" value="AseDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="Sybase.Data.AseClient.AseException, Sybase.Data.AseClient, Version=1.1.411.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].MessageNumber.ToString()"/>

        <!-- TODO select form system db all errors that have 'incorrect syntax' at the start of the error string-->
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>101,102,103,104,105,106,107,108,109,110,111,112,113,116,120,121,123,207,208,213,257,512</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>423,511,515,530,547,2601,2615,2714</value>
        </property>
        <property name="ErrorCodes.TransientAccessResourceFailureCodes">
          <value>921,1105</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1205</value>
        </property>
      </object>
    </constructor-arg>
  </object>
  
  <object id="SybaseAse-15" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Sybase Adaptive Server Enterprise 15.0.2, provider V1.15.152"/>
        <constructor-arg name="assemblyName" value="Sybase.Data.AseClient, Version=1.15.152.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7" />
        <constructor-arg name="connectionType" value="Sybase.Data.AseClient.AseConnection, Sybase.Data.AseClient, Version=1.15.152.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="commandType" value="Sybase.Data.AseClient.AseCommand, Sybase.Data.AseClient, Version=1.15.152.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="parameterType" value="Sybase.Data.AseClient.AseParameter, Sybase.Data.AseClient, Version=1.15.152.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="dataAdapterType" value="Sybase.Data.AseClient.AseDataAdapter, Sybase.Data.AseClient, Version=1.15.152.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="commandBuilderType" value="Sybase.Data.AseClient.AseCommandBuilder, Sybase.Data.AseClient, Version=1.15.152.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="Sybase.Data.AseClient.AseDbType, Sybase.Data.AseClient, Version=1.15.152.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="parameterDbTypeProperty" value="AseDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="Sybase.Data.AseClient.AseException, Sybase.Data.AseClient, Version=1.15.152.0, Culture=neutral, PublicKeyToken=26e0f1529304f4a7"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].MessageNumber.ToString()"/>

        <!-- TODO select form system db all errors that have 'incorrect syntax' at the start of the error string-->
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>101,102,103,104,105,106,107,108,109,110,111,112,113,116,120,121,123,207,208,213,257,512</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>423,511,515,530,547,2601,2615,2714</value>
        </property>
        <property name="ErrorCodes.TransientAccessResourceFailureCodes">
          <value>921,1105</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1205</value>
        </property>
      </object>
    </constructor-arg>
  </object>


  <!-- used with ASE12.5 and ASE15 -->
  <object id="SybaseAse-AdoNet2" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Sybase Adaptive Server Enterprise 15.0.2, provider V1.15.192.0"/>
        <constructor-arg name="assemblyName" value="Sybase.AdoNet2.AseClient, Version=1.15.192.0, Culture=neutral, PublicKeyToken=95d94fac46c88e1e" />
        <constructor-arg name="connectionType" value="Sybase.Data.AseClient.AseConnection, Sybase.AdoNet2.AseClient, Version=1.15.192.0, Culture=neutral, PublicKeyToken=95d94fac46c88e1e"/>
        <constructor-arg name="commandType" value="Sybase.Data.AseClient.AseCommand, Sybase.AdoNet2.AseClient, Version=1.15.192.0, Culture=neutral, PublicKeyToken=95d94fac46c88e1e"/>
        <constructor-arg name="parameterType" value="Sybase.Data.AseClient.AseParameter, Sybase.AdoNet2.AseClient, Version=1.15.192.0, Culture=neutral, PublicKeyToken=95d94fac46c88e1e"/>
        <constructor-arg name="dataAdapterType" value="Sybase.Data.AseClient.AseDataAdapter, Sybase.AdoNet2.AseClient, Version=1.15.192.0, Culture=neutral, PublicKeyToken=95d94fac46c88e1e"/>
        <constructor-arg name="commandBuilderType" value="Sybase.Data.AseClient.AseCommandBuilder, Sybase.AdoNet2.AseClient, Version=1.15.192.0, Culture=neutral, PublicKeyToken=95d94fac46c88e1e"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="Sybase.Data.AseClient.AseDbType, Sybase.AdoNet2.AseClient, Version=1.15.192.0, Culture=neutral, PublicKeyToken=95d94fac46c88e1e"/>
        <constructor-arg name="parameterDbTypeProperty" value="AseDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="Sybase.Data.AseClient.AseException, Sybase.AdoNet2.AseClient, Version=1.15.192.0, Culture=neutral, PublicKeyToken=95d94fac46c88e1e"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].MessageNumber.ToString()"/>

        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>101,102,103,104,105,106,107,108,109,110,111,112,113,116,120,121,123,207,208,213,257,512</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>423,511,515,530,547,2601,2615,2714</value>
        </property>
        <property name="ErrorCodes.TransientAccessResourceFailureCodes">
          <value>921,1105</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>1205</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <!-- INFORMIX -->
  <!-- initial version based on CSDK 3.50.TC7 -->
  <object id="IfxOdbc" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Informix, ODBC provider in framework .NET V2"/>
        <constructor-arg name="assemblyName" value="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="connectionType" value="System.Data.Odbc.OdbcConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandType" value="System.Data.Odbc.OdbcCommand, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterType" value="System.Data.Odbc.OdbcParameter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="dataAdapterType" value="System.Data.Odbc.OdbcDataAdapter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderType" value="System.Data.Odbc.OdbcCommandBuilder, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="System.Data.Odbc.OdbcType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterDbTypeProperty" value="OdbcType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="System.Data.Odbc.OdbcException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="false"/>
        <constructor-arg name="bindByName" value="false"/>
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError.ToString()"/>
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>
            -200, -201, -202, -203, -204, -205, -206, -217, -218, -220, -223, -235, -236, -253,
            -282, -283, -294, -300, -324, -681, -696, -11012, -11021, -11035, -11038
          </value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>-272, -273, -274, -275, -329, -387, -388, -389, -706</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>-100, -108, -239, -268</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>-284, -306, -674</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>
            -391, -691, -692, -746, -1200, -1201, -1202, -1204, -1205, -1206, -1207, -1213, -1214, -1215, -1226,
            -11003, -11023, -11025, -11027, -11028, -11029, -11030, -23103, -23104, -23105
          </value>
        </property>
        <property name="ErrorCodes.TransientAccessResourceFailureCodes">
          <value>-213, -221, -458, -908, -11015, -11017, -11020, -11301, -11353, -11354</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>
            -106, -107, -113, -134, -144, -154, -233, -243, -244, -245, -246, -263, -289, -347, -378
          </value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>-124, -128, -237, -238, -241, -248, -255, -256, -278, -535, -627, -628, -629, -715, -716, -11037</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>-143</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="IfxSQLI-3.0.0.2" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Informix, old native provider"/>
        <constructor-arg name="assemblyName" value="IBM.Data.Informix, Version=3.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />
        <constructor-arg name="connectionType" value="IBM.Data.Informix.IfxConnection, IBM.Data.Informix, Version=3.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandType" value="IBM.Data.Informix.IfxCommand, IBM.Data.Informix, Version=3.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />
        <constructor-arg name="parameterType" value="IBM.Data.Informix.IfxParameter, IBM.Data.Informix, Version=3.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />
        <constructor-arg name="dataAdapterType" value="IBM.Data.Informix.IfxDataAdapter, IBM.Data.Informix, Version=3.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />
        <constructor-arg name="commandBuilderType" value="IBM.Data.Informix.IfxCommandBuilder, IBM.Data.Informix, Version=3.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="IBM.Data.Informix.IfxType, IBM.Data.Informix, Version=3.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />
        <constructor-arg name="parameterDbTypeProperty" value="IfxType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="IBM.Data.Informix.IfxException, IBM.Data.Informix, Version=3.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="false"/>
        <constructor-arg name="bindByName" value="false"/>
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError.ToString()"/>
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>
            -200, -201, -202, -203, -204, -205, -206, -217, -218, -220, -223, -235, -236, -253,
            -282, -283, -294, -300, -324, -681, -696, -11012, -11021, -11035, -11038
          </value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>-272, -273, -274, -275, -329, -387, -388, -389, -706</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>-100, -108, -239, -268</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>-284, -306, -674</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>
            -391, -691, -692, -746, -1200, -1201, -1202, -1204, -1205, -1206, -1207, -1213, -1214, -1215, -1226,
            -11003, -11023, -11025, -11027, -11028, -11029, -11030, -23103, -23104, -23105
          </value>
        </property>
        <property name="ErrorCodes.TransientAccessResourceFailureCodes">
          <value>-213, -221, -458, -908, -11015, -11017, -11020, -11301, -11353, -11354</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>
            -106, -107, -113, -134, -144, -154, -233, -243, -244, -245, -246, -263, -289, -347, -378
          </value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>-124, -128, -237, -238, -241, -248, -255, -256, -278, -535, -627, -628, -629, -715, -716, -11037</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>-143</value>
        </property>
      </object>
    </constructor-arg>
  </object>

  <object id="IfxDRDA-9.0.0.2" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Informix, IBM.Data.DB2 9.7"/>
        <constructor-arg name="assemblyName" value="IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="connectionType" value="IBM.Data.DB2.DB2Connection, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandType" value="IBM.Data.DB2.DB2Command, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="parameterType" value="IBM.Data.DB2.DB2Parameter, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="dataAdapterType" value="IBM.Data.DB2.DB2DataAdapter, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandBuilderType" value="IBM.Data.DB2.DB2CommandBuilder, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="IBM.Data.DB2.DB2Type, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="parameterDbTypeProperty" value="DB2Type"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="@"/>
        <constructor-arg name="exceptionType" value="IBM.Data.DB2.DB2Exception, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
        <constructor-arg name="useParameterPrefixInSql" value="true"/>
        <constructor-arg name="bindByName" value="true"/>
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError.ToString()"/>
        <property name="ErrorCodes.BadSqlGrammarCodes">
          <value>
            -200, -201, -202, -203, -204, -205, -206, -217, -218, -220, -223, -235, -236, -253,
            -282, -283, -294, -300, -324, -681, -696, -11012, -11021, -11035, -11038
          </value>
        </property>
        <property name="ErrorCodes.PermissionDeniedCodes">
          <value>-272, -273, -274, -275, -329, -387, -388, -389, -706</value>
        </property>
        <property name="ErrorCodes.DuplicateKeyCodes">
          <value>-100, -108, -239, -268</value>
        </property>
        <property name="ErrorCodes.DataAccessResourceFailureCodes">
          <value>-284, -306, -674</value>
        </property>
        <property name="ErrorCodes.DataIntegrityViolationCodes">
          <value>
            -391, -691, -692, -746, -1200, -1201, -1202, -1204, -1205, -1206, -1207, -1213, -1214, -1215, -1226,
            -11003, -11023, -11025, -11027, -11028, -11029, -11030, -23103, -23104, -23105
          </value>
        </property>
        <property name="ErrorCodes.TransientAccessResourceFailureCodes">
          <value>-213, -221, -458, -908, -11015, -11017, -11020, -11301, -11353, -11354</value>
        </property>
        <property name="ErrorCodes.CannotAcquireLockCodes">
          <value>
            -106, -107, -113, -134, -144, -154, -233, -243, -244, -245, -246, -263, -289, -347, -378
          </value>
        </property>
        <property name="ErrorCodes.CannotSerializeTransactionCodes">
          <value>-124, -128, -237, -238, -241, -248, -255, -256, -278, -535, -627, -628, -629, -715, -716, -11037</value>
        </property>
        <property name="ErrorCodes.DeadlockLoserCodes">
          <value>-143</value>
        </property>
      </object>
    </constructor-arg>
  </object> 
  
  <object id="Odbc-1.1" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Microsoft ODBC, provider V1.0.5000.0 in framework .NET V1.1"/>
        <constructor-arg name="assemblyName" value="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="connectionType" value="System.Data.Odbc.OdbcConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandType" value="System.Data.Odbc.OdbcCommand, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterType" value="System.Data.Odbc.OdbcParameter, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="dataAdapterType" value="System.Data.Odbc.OdbcDataAdapter, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderType" value="System.Data.Odbc.OdbcCommandBuilder, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="System.Data.Odbc.OdbcType, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterDbTypeProperty" value="OdbcType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="System.Data.Odbc.OdbcException, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="false"/>
        <constructor-arg name="bindByName" value="false"/>
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError.ToString()"/>
      </object>
    </constructor-arg>
  </object>

  <object id="Odbc-2.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Microsoft ODBC, provider V2.0.0.0 in framework .NET V2"/>
        <constructor-arg name="assemblyName" value="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="connectionType" value="System.Data.Odbc.OdbcConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandType" value="System.Data.Odbc.OdbcCommand, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterType" value="System.Data.Odbc.OdbcParameter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="dataAdapterType" value="System.Data.Odbc.OdbcDataAdapter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderType" value="System.Data.Odbc.OdbcCommandBuilder, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="System.Data.Odbc.OdbcType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterDbTypeProperty" value="OdbcType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="System.Data.Odbc.OdbcException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="false"/>
        <constructor-arg name="bindByName" value="false"/>
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError.ToString()"/>
      </object>
    </constructor-arg>

  </object>

  <object id="Odbc-4.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="Microsoft ODBC, provider V4.0.0.0 in framework .NET V4"/>
        <constructor-arg name="assemblyName" value="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="connectionType" value="System.Data.Odbc.OdbcConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="commandType" value="System.Data.Odbc.OdbcCommand, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterType" value="System.Data.Odbc.OdbcParameter, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="dataAdapterType" value="System.Data.Odbc.OdbcDataAdapter, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderType" value="System.Data.Odbc.OdbcCommandBuilder, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="System.Data.Odbc.OdbcType, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <constructor-arg name="parameterDbTypeProperty" value="OdbcType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="System.Data.Odbc.OdbcException, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="false"/>
        <constructor-arg name="bindByName" value="false"/>
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError.ToString()"/>
      </object>
    </constructor-arg>

  </object>

  <alias name="Odbc-2.0" alias="System.Data.Odbc"/>

  <object id="Cache-2.0.0.1" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
    <constructor-arg name="dbMetaData">
      <object type="Spring.Data.Common.DbMetadata">
        <constructor-arg name="productName" value="InterSystems CacheConnection Version 2.0.0.1 in framework .NET V2"/>
        <constructor-arg name="assemblyName" value="InterSystems.Data.CacheClient, Version 2.0.0.1, Culture=neutral, PublicKeyToken=ad350a26c4a4447c" />
        <constructor-arg name="connectionType" value="InterSystems.Data.CacheClient.CacheConnection, InterSystems.Data.CacheClient, Version=2.0.0.1, Culture=neutral, PublicKeyToken=ad350a26c4a4447c"/>
        <constructor-arg name="commandType" value="InterSystems.Data.CacheClient.CacheCommand, InterSystems.Data.CacheClient, Version=2.0.0.1, Culture=neutral, PublicKeyToken=ad350a26c4a4447c" />
        <constructor-arg name="parameterType" value="InterSystems.Data.CacheClient.CacheParameter, InterSystems.Data.CacheClient, Version=2.0.0.1, Culture=neutral, PublicKeyToken=ad350a26c4a4447c" />
        <constructor-arg name="dataAdapterType" value="InterSystems.Data.CacheClient.CacheDataAdapter, InterSystems.Data.CacheClient, Version=2.0.0.1, Culture=neutral, PublicKeyToken=ad350a26c4a4447c" />
        <constructor-arg name="commandBuilderType" value="InterSystems.Data.CacheClient.CacheCommandBuilder, InterSystems.Data.CacheClient, Version=2.0.0.1, Culture=neutral, PublicKeyToken=ad350a26c4a4447c" />
        <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
        <constructor-arg name="parameterDbType" value="InterSystems.Data.CacheClient.CacheDbType, InterSystems.Data.CacheClient, Version=2.0.0.1, Culture=neutral, PublicKeyToken=ad350a26c4a4447c" />
        <constructor-arg name="parameterDbTypeProperty" value="CacheDbType"/>
        <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
        <constructor-arg name="parameterNamePrefix" value="?"/>
        <constructor-arg name="exceptionType" value="InterSystems.Data.CacheClient.CacheException, InterSystems.Data.CacheClient, Version=2.0.0.1, Culture=neutral, PublicKeyToken=ad350a26c4a4447c"/>
        <constructor-arg name="useParameterNamePrefixInParameterCollection" value="false"/>
        <constructor-arg name="useParameterPrefixInSql" value="false"/>
        <constructor-arg name="bindByName" value="false"/>
        <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].NativeError.ToString()"/>
      </object>
    </constructor-arg>
  </object>

  <alias name="Cache-2.0.0.1" alias="InterSystems.Data.CacheClient"/>

</objects>

