Hola amigos, estoy desarrollando una apliaccion(Visual Studio 2008) de
3 capas con nhibernate, cuando ejecuto un procedimiento en la base de
dastos(SqlServer 2005), funciona sin problemas( lo ejecuto tal cual lo
hace  Nhibernate), pero lo corro a traves de mi apliación,  y arroja
el siquiente error:

NHibernate.ADOException: could not execute query
[ exec [sp_consumo] @nro_trabajad...@p0, @cod_empre...@p1,
@cod_plan...@p2 ]
  Name:empRut - Value:123123123  Name:cod_empresa - Value:390
Name:cod_planta - Value:360
[SQL: exec [sp_consumo] @nro_trabajad...@p0, @cod_empre...@p1,
@cod_plan...@p2] ---> System.IndexOutOfRangeException:
fec_inicio_feriado
   en System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String
fieldName)
   en System.Data.SqlClient.SqlDataReader.GetOrdinal(String name)
   en NHibernate.Driver.NHybridDataReader.GetOrdinal(String name)
   en NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String
name)..........

Sucede aunque que quiera retornar toda la clase o solo un valor de es,
la tabla tiene mas campos de los que he mapeado.

Cabe señalar que la base de datos ya existe y no puedo hacer cambios
en ella.
La clase y los mapeos son los siguientes:

Clase C#:

   public partial class ConsumoTrabajador
    {
        private Int32 _nro_operacion;
        private String _periodo;
        private Decimal _num_dias_feriados;
        private String _estado;
        public ConsumoTrabajador()
        {

        }
        public virtual Int32 nro_operacion
        {
            get { return _nro_operacion; }
            set { _nro_operacion = value; }
        }
        public virtual String periodo
        {
            get { return _periodo; }
            set { _periodo = value; }
        }
        public virtual Decimal num_dias_feriados
        {
            get { return _num_dias_feriados; }
            set { _num_dias_feriados = value; }
        }
        public virtual String estado
        {
            get { return _estado; }
            set { _estado = value; }
       }
    }
}

Mapeo de la clase:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" schema="dbo"
namespace="XXX.XXX.Domain" assembly="XXX.XXX.Domain">
  <class name ="ConsumoTrabajador" table="movimient_frds">
    <id name="nro_operacion" column="nro_operacion" type
="System.Int32"/>
    <property name="periodo" column="fec_inicio_feriado" />
    <property name="num_dias_feriados" column="num_dias_feriados" />
    <property name="estado" column="cod_feriado_solici"/>
 </class>
</hibernate-mapping>

Mapeo de la Query:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" schema="dbo"
        namespace="ECR.Feriados.Domain" assembly="ECR.Feriados.Domain">
  <sql-query name="ConsumoTrabajadorbyRut" callable="true">
    <query-param name="nro_trabajador" type="System.Int32"/>
    <query-param name="cod_empresa" type="System.Int32"/>
    <query-param name="cod_planta" type="System.Int32"/>
    <return  class="ConsumoTrabajador">
    </return>
    exec [sp_consumo] @nro_trabajador=:empRut,
@cod_empresa=:cod_empresa, @cod_planta=:cod_planta
  </sql-query>
</hibernate-mapping>

Asi ejecuto del Procedimiento Almacenado:

PersistenceManager pesrt = new
PersistenceManager(PersistenceManager.SessionConexion.Sessionstring.ToString(),
cnxb);

            IQuery iquery =
pesrt.sesion.GetNamedQuery("ConsumoTrabajadorbyRut");
            iquery.SetParameter("empRut",
int.Parse(empRut.ToString()));
            iquery.SetParameter("cod_empresa",
int.Parse(cod_empresa.ToString()));
            iquery.SetParameter("cod_planta",
int.Parse(cod_planta.ToString()));
            return iquery.List<ConsumoTrabajador>();



El error me parece que se genera al tratar de llenar el Objeto, pero
no se como solucionarlo.

Espero me puedan ayudar he revisado en google durante un dia completo
y no en cuentro solucion.


Gracias.

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a