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
