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