Y que tipo de aplicación es, y como es el despliegue/arquitectura?

Si es una app web o los servicios los consumis por WCF/WebServices lo
recomendado es Session Per Request.

Saludos,

El 17 de octubre de 2011 13:53, José F. Romaniello
<[email protected]>escribió:

> La sesión de nhibernate es un cache.
> A mi entender, esa implementación del repositorio no debería estar atada a
> un manejo de sesión, es decir que el ciclo de vida es algo que deberías
> manejarse a un nivel mas alto.
>
> Como estas manejando el ciclo de vida actualmente? que patrón usas?
>
> saludos
>
> El 17 de octubre de 2011 12:30, Alexandre 
> <[email protected]>escribió:
>
> Hola a todos!
>>
>>
>> Estoy usando nHibernate + uNhAddins.
>>
>>
>> Mi repositorio es:
>>
>>    public class Repository<T> : IRepository<T> where T : IEntity
>>    {
>>        private readonly ISessionFactory factory;
>>
>>        protected ISession Session
>>        {
>>            get
>>            {
>>                return factory.GetCurrentSession();
>>            }
>>        }
>>
>>        public Repository(ISessionFactory factory)
>>        {
>>            this.factory = factory;
>>        }
>>
>>        public IEnumerable<T> GetListCriteria(DetachedCriteria
>> criteria, params Order[] orders)
>>        {
>>            return RepositoryHelper<T>.GetExecutableCriteria(Session,
>> criteria, orders).List<T>();
>>        }
>>
>>    class RepositoryHelper<T>
>>    {
>>        public static ICriteria GetExecutableCriteria(ISession
>> session, DetachedCriteria criteria, Order[] orders)
>>        {
>>            ICriteria executableCriteria;
>>
>>            if (criteria != null)
>>                executableCriteria =
>> criteria.GetExecutableCriteria(session);
>>            else
>>                executableCriteria =
>> session.CreateCriteria(typeof(T));
>>
>>            if (orders != null)
>>            {
>>                foreach (Order order in orders)
>>                    executableCriteria.AddOrder(order);
>>            }
>>
>>            return executableCriteria;
>>        }
>>    }
>> }
>>
>>
>> Mi servicio es:
>>
>>                var criteria = DetachedCriteria.For<RFConsumption>()
>>                    .Add(Restrictions.Between("CounterDtm",
>> dataHoraInicio, dataHoraFim));
>>
>>                return
>> rFConsumptionRepository.GetListCriteria(criteria,
>> Order.Desc("CounterDtm"));
>>
>>
>> Cuando se ejecuta el servicio por primera vez, los datos se devuelven
>> correctamente, pero si modifico el valor de un campo directamente en
>> la base de datos con otra aplicación, el nuevo valor no se devuelve
>> por NHibernate.
>>
>> Si cambio el depósito:
>>
>>        protected ISession Session
>>        {
>>            get
>>            {
>>                factory.GetCurrentSession().Clear();
>>                return factory.GetCurrentSession();
>>            }
>>        }
>>
>> valor modificado por otra aplicación siempre se devuelve.
>>
>> ¿cuál es la mejor manera de implementar el repositorio?
>>
>> Creo que Session.Clear no es la mejor manera de resolver esta
>> cuestión, ya que estoy usando uNhAddins en mi capa de servicio.
>>
>> 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
>



-- 
Saludos,

Walter G. Poch
Sr. .Net Developer
--------------------------------------------
Cell: +54 (9 341) 3353273
[email protected]

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