si, de hecho creo que habia implementado algo pero no recuerdo si lo hice
solo en mi pc o en unh.

2011/3/15 Juan Cuello <[email protected]>

> CpBT en web creo que puede ser otro problema... No hay forma de
> controlar si un usuario finaliza la conversación o no...
>
>
> On 15 mar, 10:41, "[email protected]" <[email protected]>
> wrote:
> > No se si será el caso, pero cuando mezclas objetos de distintas
> > sessions es necesario sobreescribirlo.
> http://nhforge.org/doc/nh/en/index.html#persistent-classes-equalshash...
> > yo trato de evitar, siempre que sea posible, pasar objetos de una
> > session de nh a otra.
> >
> > Con cargar solo los id de user, si, me refiero a que al segundo
> > request solo le lleguen los Id de users a eliminar (entiendo que ahora
> > le llega una lista de objetos almacenada en la session de asp.net).
> >
> > Como práctica recomendada, si usás session per request no guardes
> > objetos persistentes en la session de asp.net porque tarde o temprano
> > vas a terminar teniendo uno y otro problema que solucionar. Si fuese
> > "inevitable" dale una mirada a CpBT en web.
> >
> > nelo
> >
> > 2011/3/14 jazavala <[email protected]>:
> >
> >
> >
> >
> >
> >
> >
> > > no tengo sobreescrito el equal y el gethashcode de user ni de role, la
> > > vdd te soy sincero es algo que nunca he realizado, pecando de muy
> > > novato po que debo sobrescribirlos??
> >
> > > con cargar solo los ids de users, te refieres a cuando pase los
> > > usuarios a eliminar del rol solo pase los id's vdd??
> >
> > > On 13 mar, 23:48, "[email protected]" <[email protected]>
> > > wrote:
> > >> Si usás session per request no es recomendable guardar instancias de
> > >> objetos persistentes en la session de asp.net.
> >
> > >> En este caso en particular, lo que se me ocurre es:
> > >> - para que te funcione el código que tenés creo que deberías hacer que
> > >> el ciclo de vida de tu session contenga al ciclo de vida de los
> > >> objetos que con ella manejas (ya sea leer o guardar), es decir no usar
> > >> session per request sino CpBT. NO te recomiendo esta opción.
> > >> - Usar DTOs como te recomienda José, yo soy partidario de los DTOs en
> > >> los casos en que difieren del Domain.
> > >> - o bien podrías intentar algo como:
> >
> > >> foreach(var user in Users)
> > >> {
> > >>    var u = currentRole.Users.Single(x => x.Id = user.Id);
> > >>    currentRole.Users.Remove(u);
> >
> > >> }
> >
> > >> y para mejorarlo un poco, yo guardaría solo la lista de Ids en Users.
> >
> > >> consulta: ¿tenés sobreescrito el Equal y el GetHashCode de User?
> >
> > >> de todas formas te recomiendo que veas la VAN que te dice José
> > >> (http://altnethispano.org/wiki/van-2010-12-04-nhibernate-session.ashx
> )
> > >> ya que en esta hablamos bastante de los porque de todo lo que te está
> > >> pasando y si no haces algunos ajustes vas a empezar a tener otros
> > >> problemas (como el LazyLoadingException que mencionas).
> >
> > >> saludos.
> > >> nelo.
> >
> > >> 2011/3/12 jazavala <[email protected]>:
> >
> > >> > Deberia de usar DTO's para la vista? transformar mis entidades de
> > >> > negocio a dtos para exponerlos en la interfaz de usuario.
> >
> > >> > Entonces por ejemplo si voy a mostrar los datos generales del rol y
> > >> > usuarios con los que cuenta el rol podria
> >
> > >> > crear un dto en el cual sette esto? cada que lo necesite, y mis
> > >> > objetos y sus relaciones usarlas lazy?
> >
> > >> > y por ejemplo si realizo una modificación sobre el currentrole al
> > >> > terminar el request, mi currentrole no seria ya valido sino yo
> > >> > necesitaria recrear mi dto segun vaya teniendo modificaciones mi
> > >> > objeto de negocio
> >
> > >> > ??
> >
> > >> > On 12 mar, 12:38, José F. Romaniello <[email protected]>
> wrote:
> > >> >> Hola, vamos a aclarar dos cosas;
> >
> > >> >> 1- las entidades no siempre funcionan bien  como viewmodels.
> > >> >> 2- las entidades que se cargan en un session (request en tu caso)
> > >> >> deberían morir en el session. Nhibernate tiene muchas cosas para
> > >> >> facilitarte trabajar en los otros casos
> (session.update/session.merge)
> > >> >> pero no te recomiendo usarlo por todos lados.
> >
> > >> >> Te recomiendo mirar el primer video de manejo de session de
> nhibernate
> > >> >> de Nelo, ya que hablamos mucho de las cosas que te estan surgiendo
> > >> >> como dudas.
> >
> > >> >> El 12/03/11, jazavala <[email protected]> escribió:
> >
> > >> >> > Que tal nuevamente despejando dudas, tengo la siguiente cuestion
> estoy
> > >> >> > usando session per request que anexo en la parte baja
> >
> > >> >> > esto se supone que en cada request me abre una session, la duda
> que
> > >> >> > tengo es si tengo un formulario donde edito un Role
> >
> > >> >> > lo hacia de la siguiente forma
> >
> > >> >> > public ControllerRole Controller{get;set;} //Esto lo inyecto en
> el
> > >> >> > form con spring.net
> >
> > >> >> > If((!IsPostback)&&(!IsCallback))
> > >> >> >    //Cargo un CurrentRole con el controller inyectado
> >
> > >> >> > despues tengo un metodo dentro del webform
> >
> > >> >> > donde le quito usuarios al rol, tengo un gridview donde
> selecciono que
> > >> >> > usuarios quitar mando a un controller el currentrole y los ids de
> los
> > >> >> > usuarios, en el controller saco los users apartir de los ids, y
> > >> >> > realizo un
> >
> > >> >> > foreach(var user in Users)
> > >> >> > {
> > >> >> > currentRole.Users.Remove(user)
> > >> >> > }
> >
> > >> >> > pero me pasa que los usuarios del currentRole no son iguales al
> user
> > >> >> > en el ciclo del foreach, cambie en el controller recibir el
> roleid y
> > >> >> > rescatarlo por getbyId y mandarlo al foreach y de esta forma si
> son
> > >> >> > iguales, que me esta pasando es la session es acaso que al dar
> clic en
> > >> >> > la accion para remover como no vuelvo a cargar el currentrole ya
> no
> > >> >> > son igual los users, lo que me percate es que los users del
> > >> >> > currentrole en el caso cuando no los borra tiene los roles del
> user
> > >> >> > (ya que es relacion many to many) traen un lazy error, y el user
> del
> > >> >> > foreach si trae los roles.
> >
> > >> >> > ademas creo que esta cargando los lazy cuando quizas no lo
> deberia
> > >> >> > hacer, es decir role.users.roles.users.roles etc...
> >
> > >> >> > como podrias solucionar esto hay que poner en algun valor por
> default
> > >> >> > conform como me da los lazy del many to many
> >
> > >> >> > gracias de antemano
> >
> > >> >> > using System;
> > >> >> > using System.Web;
> > >> >> > using NHibernate.Context;
> >
> > >> >> > namespace QS.NHibernate.Infrastructure
> > >> >> > {
> >
> > >> >> >         public class NHibernateSessionPerRequest : IHttpModule
> > >> >> >         {
> > >> >> >             /// <summary>
> > >> >> >             /// You will need to configure this module in the
> > >> >> > web.config file of your
> > >> >> >             /// web and register it with IIS before being able to
> use
> > >> >> > it. For more information
> > >> >> >             /// see the following link:
> > >> >> >http://go.microsoft.com/?linkid=8101007
> > >> >> >             /// </summary>
> >
> > >> >> >             public void Dispose()
> > >> >> >             {
> > >> >> >                 //clean-up code here.
> > >> >> >             }
> >
> > >> >> >             public void Init(HttpApplication context)
> > >> >> >             {
> > >> >> >                 // Below is an example of how you can handle
> > >> >> > LogRequest event and provide
> > >> >> >                 // custom logging implementation for it
> > >> >> >                 context.BeginRequest += Start;
> > >> >> >                 context.EndRequest += End;
> > >> >> >             }
> >
> > >> >> >             private void Start(object sender, EventArgs e)
> > >> >> >             {
> > >> >> >                 var sessionFactory =
> > >> >> > NHibSessionManager.GetSessionFactory();
> > >> >> >                 var session = sessionFactory.OpenSession();
> > >> >> >                 session.BeginTransaction();
> >
> > >> >> >                 CurrentSessionContext.Bind(session);
> > >> >> >             }
> >
> > >> >> >             private void End(object sender, EventArgs e)
> > >> >> >             {
> > >> >> >                 var sessionFactory =
> > >> >> > NHibSessionManager.GetSessionFactory();
> > >> >> >                 var session = sessionFactory.GetCurrentSession();
> >
> > >> >> >                 if ((session.Transaction!
> > >> >> > =null)&&(session.Transaction.IsActive))
> > >> >> >                 {
> > >> >> >                     session.Transaction.Commit();
> > >> >> >                 }
> >
> > >> >> >                 session.Close();
> > >> >> >                 CurrentSessionContext.Unbind(sessionFactory);
> > >> >> >             }
> >
> > >> >> >         }
> >
> > >> >> > }
> >
> > >> >> > --
> > >> >> > Para escribir al Grupo, hágalo a esta dirección:
> > >> >> > [email protected]
> > >> >> > Para más, visite:
> http://groups.google.com/group/NHibernate-Hispano
> >
> > >> >> --
> > >> >> Enviado desde mi dispositivo móvil
> >
> > >> > --
> > >> > 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
>



-- 
Fabio Maulo

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