Hola Gustavo, Hace unas semanas (o meses?) envie a esta lista mi conclusion sobre lo que parecia ser un problema sin solucion. Era una situacion muy parecida a la tuya, yo necesitaba que una coleccion persistente estuviera ordenada. Luego de dar muchas vueltas con distintos tipos de colecciones me di cuenta de que estaba cometiendo un error (al menos en mi opinion). Le estaba pidiendo a mi coleccion dos servicios: 1) soportar la persistencia y 2) mantener un orden. La segunda responsabilidad estaba fuera de lugar porque era una cuestion de logica de negocio (como sucende en tu caso). Me di cuenta cuando pense que para una futura necesidad podia necesitar otro orden distinto. Lo que yo hice fue dejar la coleccion privada (lo cual hago usualmente) y agregar un metodo o propiedad que me devolvia la coleccion ordenada por algun criterio. Este metodo devolvia un array a partir de una coleccion que ordenaba en memoria. Podes ver el codigo si encontras aquel post. Vos podrias ir por el mismo camino o preguntarte si realmente necesitas exponer la coleccion. Por ahi podes arreglarte con un metodo que devuelva el proximo elemento encapsulando la logica de prioidad en ese metodo. Este enfoque, en mi opinion, te da varias ventajas: a) no complicas la persistencia, b) encapsulas la logica de prioridad, c) publicas menos elementos de tu clase, d) si necesitaras otra logica de priridad en otro momento no tenes mas que generar otro metodo. Saludos <blocked::mailto:[EMAIL PROTECTED]> Buscamos desarrolladores .NET Carlos Peix [EMAIL PROTECTED] <blocked::mailto:[EMAIL PROTECTED]> tel: 4257-4622 cel: 15-4406-7571 _____
De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Gustavo Ringel Enviado el: Sábado, 21 de Junio de 2008 11:59 a.m. Para: nhibernate-hispano Asunto: [NHibernate-Hispano] <list> para cola ordenada con prioridades Hi. Hoy en dia en mi aplicacion manejo una lista ordenada de objetos a ser chequeados por estacion de trabajo. Esta lista de objetos funciona LIFO, pero si llega un elemento de alta prioridad y no hay otros objetos de alta prioridad en la lista el nuevo objeto tiene que pasar a ser el primero de la lista. hoy en dia para manejarlo en lo que hago es llevar la lista con posiciones 0, 1, 2, ... etc y si llega un objeto con prioridad minima le asigno min(posicion) - 1, permito posiciones negativas y asi en algun momento puedo tener -2, -1, 0, 1, 2, etc, en la lista. bueno, hasta hoy en dia hacia esto con un bag...el cual por un lado me permite insercion rapida en la lista, pero estoy obligado a hacer un sort para recibirla como quiero. Pense entonces una vez entendido el concepto usar un <list> ahora el problema que tengo es que si inserto en el list en la posicion 0, me va a hacer un update a todos los elementos subsecuentes para atrasarlos en la lista...si tengo 70 o 80 objetos que es el maximo son 70 u 80 updates. Contra eso sigue ganando mi algoritmo anterior + sort...el cual es bastante menos costoso que 80 updates... Pero si alguien tuviera idea de como setear al principio del list sin que nhibernate actualice todos los objetos podria manejar el orden de la lista sin agregar sort lo cual tiene algunas ventajas... Ideas? Objeciones? Gustavo. --~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---
