nHibernate Mapping with Oracle Varchar2 Data Types
- by Blake Blackwell
I am new to nHibernate and having some issues getting over the learning curve.  My current question involves passing a string value as a parameter to a stored sproc.  The error I get is:
Input string is not in correct format.
My mapping file looks like this:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="MyCompany.MyProject.Core"
                   namespace="MyCompany.MyProject.Core"
                   >
  <class name="MyCompany.MyProject.Core.MyTable" table="My_Table" lazy="false">
    <id name="Id" column="Id"></id>
    <property name="Name" column="Name" />
  </class>
  <sql-query name="sp_GetTable" callable="true">
    <query-param name="int_Id" type="int"/>
    <query-param name="vch_MyId" type="String"/>
    <return class="MyCompany.MyProject.Core.MyTable" />
    call procedure MYPKG.MYPROC(:int_Id,:vch_MyId)
  </sql-query>
</hibernate-mapping>
When I debug nHibernate it looks like it is not an actual string value, but instead just an object value.  Not sure about that though...
EDIT:
Adding additional code for clarification:
UNIT Test
    List<ProcedureParameter> parms = new List<ProcedureParameter>();
        parms.Add( new ProcedureParameter { ParamName = "int_Id", ParamValue = 1} );
        parms.Add( new ProcedureParameter { ParamName = "vch_MyId", ParamValue = "{D18BED07-84AB-494F-A94F-6F894E284227}" } );
        try
        {
            IList<MyTable> myTables = _context.GetAllByID<MyTable>( "sp_GetTable", parms );
            Assert.AreNotEqual( 0, myTables.Count );
        }
        catch( Exception ex )
        {
            throw ex;
        }
Data Context Method
IQuery query = _session.GetNamedQuery( queryName );
            foreach( ProcedureParameter parm in parms )
            {
            query.SetParameter(parm.ParamName, "'" + parm.ParamValue + "'");                    
            }
            return query.List<T>();
Come to think of it, it may have something to do with my DataContext method.