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