iBatis.Net DataMapper is our de facto standard for implementing persistence in .NET applications. The framework works well with an object-oriented domain model and relational data store.
Today, we stumbled upon a bug in the latest production release of iBatis.Net DataMapper. A new parameter was added to the existing stored procedure and although this parameter came with a default value, the application threw the following exception:
"Specified argument was out of the range of valid values. Parameter name: index" from IBatisNet.DataMapper.Configuration.ParameterMapping.ParameterPropertyCollection.get_Item.
One way to work around this issue is to replace the original procedure configuration:
<statements>
<procedure id="OurStoredProcedure" parameterMap="OurStoredProcedure_Parameters" >
up_YourStoredProcedure
</procedure>
</statements>
</parameterMaps>
<parameterMap id="OurStoredProcedure_Parameters" class="OurParametersClass">
<parameter property="Value1"/>
<parameter property="Value2"/>
</parameterMap>
<parameterMaps>
with a dynamic statement:
<statements>
<statement id="OurStoredProcedure" parameterClass="OurParametersClass" >
EXEC up_OurStoredProcedure #Value1#, #Value2#
</statement>
</statements>
Happy coding!