Hi Marcelo, Session per Business Transaction, que es lo que entiendo por tu session por unidad de trabajo es lo que propone Fabio y de lo que tenemos hecho algunos ejemplos en uNHAddins para Winforms. En Web es un poco distinto, aunque no tanto, depende de como se trabaje.
Datos que no se modifican o modifican lentamente son candidatos a cache de segundo nivel, si es que se leen mucho obviamente... Gustavo. 2009/12/4 Marcelo Salazar <[email protected]> > > Claro tienes toda la razón que no es un problema del sistema sino que > falta de información de como es el uso y funcionamiento de NHibernate. > Tienes toda la razon con que el uso de Refresh(). Al utilizarlo > actualiza sin problemas la información pero no que sea la solución mas > limpia a lo que necesito hacer. > Encuentro que es mejor que cambie el manejo de sesiones que utilizo a > uno de sesiones por unidad de trabajo y utilizar cache nivel 2 para > decidir que datos no se modifican con el tiempo. Te parece q es una > buena idea? > > Saludos > > On 4 dic, 11:29, Gustavo Ringel <[email protected]> wrote: > > Marcelo, lo primero que tenes que entender es que no hay ningún problema. > > Es decir, no tenes que buscar una solución a un problema, sino aprender > como > > trabaja NH. > > > > El problema real es que un objeto esta cambiando en una session distinta > que > > la session que vos estas viendo, y si en tu caso de uso es importante que > > esto pueda pasar tenes que aprender a usar los metodos Merge() y > Refresh() > > > > Gustavo. > > > > 2009/12/4 Marcelo Salazar <[email protected]> > > > > > > > > > > > > > Gracias, por la aclaración estoy informandome mas sobre las cache de > > > segundo nivel que según lo que tengo entendido podria solucionar mi > > > problema. Alguna sugerencia respecto a alguna cache de segundo nivel > > > que aplique a mi problema? > > > > > Saludos > > > > > On 3 dic, 14:25, Gustavo Ringel <[email protected]> wrote: > > > > Bueno, ahi es distinto y ahi si aplica todo lo que te dijeron del > Cache. > > > > Si el dato ya lo leiste (no es nuevo!) entonces NH no va a ir a > buscarlo > > > a > > > > la base, si vos sabes que en tu caso de uso eso puede pasar, tenes > que > > > usar > > > > session.Refresh() > > > > > > Gustavo. > > > > > > 2009/12/3 Marcelo Salazar <[email protected]> > > > > > > > Mis sinceras disculpas, el error no radica al momento en que otro > > > > > usuario ingresa un registro sino que cuando este actualiza alguno. > > > > > > > En este momento, si yo, listo todos los clientes me quedan en un > cache > > > > > y si alguno de ellos es modificado directamente en la BD o con otro > > > > > programa, al listar nuevamente todos los clientes el listado no > varia, > > > > > siendo que deberian listarse los clientes con las modificaciones > > > > > realizadas. Espero que me halla explicado bien. > > > > > > > saludos > > > > > > > On 3 dic, 12:21, Marcelo Salazar <[email protected]> wrote: > > > > > > Hola, > > > > > > > > gracias a todos por sus prontas respuestas. Adjunto código > solicitado > > > > > > > > El código del Manejador de Sesiones se encuentra enhttp:// > > > > > shorttext.com/hio52ln0d > > > > > > > > Básicamente lo que realizo cuando hago un GetAll es: > > > > > > > > public class ClienteDAO : AbstractGenericDao<Cliente, uint> { } > > > > > > > > public class SADFactoryDAO > > > > > > { > > > > > > public ClienteDAO GetClienteDAO() > > > > > > { > > > > > > return new ClienteDAO(); > > > > > > } > > > > > > > > } > > > > > > > > public abstract class AbstractGenericDao<T, IdT> > > > > > > { > > > > > > public List<T> GetAll() > > > > > > { > > > > > > ICriteria criteria = > NHibernateSession.CreateCriteria(typeof > > > > > > (T)); > > > > > > > > return criteria.List<T>() as List<T>; > > > > > > } > > > > > > > > } > > > > > > > > Entonces en mi formulario agrego > > > > > > > > FORM1: > > > > > > > > SADFactoryDAO gFactory = new SADFactoryDAO(); > > > > > > > > private void Form1_Load(object sender, EventArgs e) > > > > > > { > > > > > > IClienteDAO wCliDAO = gFactory.GetClienteDAO(); > > > > > > List<Cliente> wListacliente = wCliDAO.GetAll(); > > > > > > > > } > > > > > > > > Eso es básicamente lo mas importante de mi conexión. Por cierto > me > > > > > > base en unos ejemplo que hay en Codeproject.com Un tal > BasicSample > > > > > > junto a un enterpriseSample. > > > > > > > > Saludos y se agradece nuevamente su ayuda > > > > > > > > On 2 dic, 16:19, Gustavo Ringel <[email protected]> > wrote: > > > > > > > > > A mi gusto el problema que haya no tiene que ver con NH sino > con > > > como > > > > > estas > > > > > > > trabajando...tendrias que pasar un poco mas de codigo donde > estan > > > > > pasando > > > > > > > las cosas para ver. > > > > > > > > > 2009/12/2 Marcelo Salazar <[email protected]> > > > > > > > > > > Hola a todos, > > > > > > > > > > estoy incursionando en NHibernate. Tengo una aplicación > corriendo > > > > > > > > bastante bien realizando todos los CRUD sin problemas, sin > > > embargo se > > > > > > > > me ha presentado el siguiente inconveniente. > > > > > > > > > > Suponiendo que tengo una clase clientes y en un Datagridview > un > > > > > > > > usuario (UsuarioA) listo la información de todos los clientes > > > > > mediante > > > > > > > > un metodo GetAll() del DAO de Clientes (Le desplego un > listado de > > > 100 > > > > > > > > registros). Paralelamente otro usuario (UsuarioB) ingresa > > > mediante un > > > > > > > > formulario un nuevo cliente (llamemosle clienteA) y yo > ingreso > > > > > > > > manualmente mediante un gestionador de BD (SQLyog, por > ejemplo) > > > un > > > > > > > > nuevo cliente (llamemosle clienteB). > > > > > > > > > > Ahora, cuando el UsuarioA llama denuevo la funcion GetAll de > > > > > Clientes, > > > > > > > > le sigue mostrando los 100 clientes y no los 102 que deberian > ser > > > en > > > > > > > > realidad. ¿Que esta sucediendo? ¿Alguna sugerencia al > respecto? > > > > > > > > > > Saludos- Ocultar texto de la cita - > > > > > > > > > - Mostrar texto de la cita -- Ocultar texto de la cita - > > > > > > > > - Mostrar texto de la cita -- Ocultar texto de la cita - > > > > > > - Mostrar texto de la cita -- Ocultar texto de la cita - > > > > - Mostrar texto de la cita - > > > --~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---
