Buenas ... está vez la pregunta es complicada.
Voy a tratar de poner la suficiente información para ver si me logro
explicar ... y mejor aún, me puedan ayudar,

Las entidades tienen la siguiente relación:
INVITATION tiene una relación 1:* con CLIENT_OBJECTION
CLIENT_OBJECTION tiene una relación *:1 con OBJECTION_TYPE

El objetivo es encontrar todas las INVITATION con un tipo de objeción
determinada.

                        var session = sessionFactory.GetCurrentSession();

                        var query = 
session.CreateCriteria<INVITATION>("invitation")
                                .CreateAlias("invitation.CLIENT_OBJECTIONs", 
"objections",
CriteriaSpecification.LeftJoin)
                                .CreateAlias("objections.OBJECTION_TYPE", 
"type")
                                .Add(Restrictions.Eq("type.ID", 
Filter.ObjectionTypeId));

                        var totalCount =
query.SetProjection(Projections.Distinct(Projections.RowCount())).List<int>()
[0];

<Código de Paginado>

                        query.SetProjection(
                                Projections.Distinct(
                                        Projections.ProjectionList()
                                                
.Add(Projections.Property("ID"), "Id")
                                                
.Add(Projections.Property("DT_APPOINTMENT"), "DtAppointment")));

        
query.SetResultTransformer(Transformers.AliasToBean(typeof(DailyAgendaQueryDto)));
                        var items = query.List<DailyAgendaQueryDto>();

                        return new PagedResult<DailyAgendaQueryDto>(items, 
totalCount,
Page);

Entiendan que es una versión simplicada de una consulta más compleja,
pero que igual tiene el mismo problema.

El problema es que no logro obtener el TotalCount correctamente. De la
forma que está devuelve valores duplicados.
En el código mostrado no está la parte de paginación, pero esa es la
causa de no poder obtener el count directamente de items.

Eso es todo. Si falta aclarar algo por favor háganme lo saber y paso
la información.

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