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