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

Responder a