Puedes empezar mirando el ciclo de vida de tu repository,
con Castle podría ser

.Configure(cr => cr.LifeStyle.Singleton)

Y para tu model el cual

.Configure(cr => cr.LifeStyle.Transient)

Y utilizar algo como esto en tu model, para que lo puedas ejecutar desde tu
view

[PersistenceConversation(ConversationEndMode = EndMode.Abort)]
        public void EndConversation()
        {
            // Finaliza la converzacion
        }



Saludos
Edgar

El 17 de octubre de 2011 10: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

Responder a