Bueno muchas cosas que decir, con lo de 3 capas te sugiero leas este post

http://www.cprieto.com/index.php/2010/05/21/el_espejismo_de_la_separacion_por_capas/

Como me sugirieron tambien, mira todas las posibilidades que tienes
antes de utilizar un sp, ya que estos entre muchas otras cosas no son
testeables

Por otro lado miro que para lo unico que utilizas la clase es para
crear un objeto y pasarle los datos que generara el sp, prueba lo
siguiente
en tu archivo de mapeo como por ejemplo

<sql-query name="consulta" callable="true">
    <query-param name="fecha" type="String"/>
    <query-param name="usuario" type="Int32"/>
    <return-scalar column="idmovimiento" type="Int32"/>
    <return-scalar column="documento" type="Int32"/>
    <return-scalar column="ComestibleConIvaNeto" type="Double"/>
    <return-scalar column="BebidasConIvaNeto" type="Double"/>
    <return-scalar column="ComestibleSinIva" type="Double"/>
    <return-scalar column="BebidasSinIva" type="Double"/>
    exec pa_cts_VentaACreditoAlCincuenta :fecha, :usuario
  </sql-query>

y al recuperarla algo como esto

IQuery query = session.GetNamedQuery(consulta)
                                .SetString("fecha", parametro1)
                                .SetInt32("usuario", parametro2);
                IList<object[]> resultado = query.List<object[]>();


A ver si te sirve


Saludos

Edgar


El día 7 de julio de 2010 12:07, Mario <[email protected]> escribió:
> Hola, Gracias por la pronta respuesta, habian algunas de las
> inconsistencias en las clases y mapeos que copie que ya estan
> correidos, pero aun sigue dando el error.
> Aca pego el error completo:
>
>  NHibernate.ADOException: could not execute query
> [ exec [sp_consumo] @nro_trabajad...@p0, @cod_empre...@p1,
> @cod_plan...@p2 ]
>  Name:empRut - Value:13907559  Name:cod_empresa - Value:350
> Name:cod_planta - Value:380
> [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)
>   en NHibernate.Type.NullableType.NullSafeGet(IDataReader rs,
> String[] names, ISessionImplementor session, Object owner)
>   en NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[]
> names, ISessionImplementor session, Object owner)
>   en
> NHibernate.Persister.Entity.AbstractEntityPersister.Hydrate(IDataReader
> rs, Object id, Object obj, ILoadable rootLoadable, String[][]
> suffixedPropertyColumns, Boolean allProperties, ISessionImplementor
> session)
>   en NHibernate.Loader.Loader.LoadFromResultSet(IDataReader rs, Int32
> i, Object obj, String instanceClass, EntityKey key, String rowIdAlias,
> LockMode lockMode, ILoadable rootPersister, ISessionImplementor
> session)
>   en NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader dr,
> Int32 i, ILoadable persister, EntityKey key, LockMode lockMode, String
> rowIdAlias, EntityKey optionalObjectKey, Object optionalObject, IList
> hydratedObjects, ISessionImplementor session)
>   en NHibernate.Loader.Loader.GetRow(IDataReader rs, ILoadable[]
> persisters, EntityKey[] keys, Object optionalObject, EntityKey
> optionalObjectKey, LockMode[] lockModes, IList hydratedObjects,
> ISessionImplementor session)
>   en NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader
> resultSet, ISessionImplementor session, QueryParameters
> queryParameters, LockMode[] lockModeArray, EntityKey
> optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean
> returnProxies)
>   en NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,
> QueryParameters queryParameters, Boolean returnProxies)
>   en
> NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor
> session, QueryParameters queryParameters, Boolean returnProxies)
>   en NHibernate.Loader.Loader.DoList(ISessionImplementor session,
> QueryParameters queryParameters)
>   --- Fin del seguimiento de la pila de la excepción interna ---
>   en NHibernate.Loader.Loader.DoList(ISessionImplementor session,
> QueryParameters queryParameters)
>   en
> NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor
> session, QueryParameters queryParameters)
>   en NHibernate.Loader.Loader.List(ISessionImplementor session,
> QueryParameters queryParameters, ISet`1 querySpaces, IType[]
> resultTypes)
>   en NHibernate.Loader.Custom.CustomLoader.List(ISessionImplementor
> session, QueryParameters queryParameters)
>   en NHibernate.Impl.SessionImpl.ListCustomQuery(ICustomQuery
> customQuery, QueryParameters queryParameters, IList results)
>   en NHibernate.Impl.SessionImpl.List(NativeSQLQuerySpecification
> spec, QueryParameters queryParameters, IList results)
>   en NHibernate.Impl.SessionImpl.List(NativeSQLQuerySpecification
> spec, QueryParameters queryParameters)
>   en NHibernate.Impl.SqlQueryImpl.List()
>   en ECR.Feriados.Business.EmpleadoBusiness.SelectConsumobyRut(String
> cod_cia, String cod_empresa, String cod_planta, String empRut) en D:
> \mis documentos\Visual Studio 2008\Projects\ECR.WS
> \ECR.Feriados.Business\EmpleadoBusiness.cs:línea 65
>   en ECR.WS.Feriados.Service.GetConsumoEmpleado(String cod_cia,
> String cod_empresa, String cod_planta, String empRut) en D:\mis
> documentos\Visual Studio 2008\Projects\ECR.WS\ECR.WS.Feriados
> \Service.asmx.cs:línea 68
>
>
> Gracias por vuestra ayuda......
>
> Atte.
> Mario.
>
>
> On 7 jul, 12:57, Edgar Ramos <[email protected]> wrote:
>> Que sigue despues de los puntos suspensivos
>>
>> en System.Data.SqlClient.SqlDataReader.GetOrdinal(String name)
>>   en NHibernate.Driver.NHybridDataReader.GetOrdinal(String name)
>>   en NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String
>> name)..........  ?
>>
>> Saludos
>>
>> Edgar
>>
>> El día 7 de julio de 2010 08:54, Mario <[email protected]> escribió:
>>
>> > 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
>
> --
> Para escribir al Grupo, hágalo a esta dirección: 
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano

-- 
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