nhibernate-hispano  

[NHibernate-Hispano] Re: Metodo Save sin una Transaccion

José Omar Mosco Rojas
Thu, 04 Sep 2008 09:23:37 -0700

Gracias por responder ahi va mi codigo con los 3 casos

//METODO PARA GUARDAR UN SOLO OBJETO
public object Save(object MyObject)
        {

            getSession();
            Sesion.Clear();

            nhTransaction = session.BeginTransaction();
            object obj=new object();
            try
            {
                session.Save(MyObject);
                obj=session.GetIdentifier(MyObject);
                nhTransaction.Commit();
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                nhTransaction.Rollback();
                throw new Exception(ex.InnerException.Message);
            }

            return obj;
        }

//CASO SIN TRANSACCION

public object Save(PuestoClienteVo puestoCliente)
        {
            getSession();
            object obj=new object();
            try
            {
                Sesion.Save(puestoCliente);
                obj=Sesion.GetIdentifier(puestoCliente);
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                throw new Exception(ex.InnerException.Message);
            }

            return obj;
        }

//CON CICLO

            ISession session = NHibernateHelper.GetCurrentSession();
            ITransaction tx = session.BeginTransaction();
            PuestoClienteVo puesto= null;
//           alObjetos Es un arreglo de objetos que instancie cuando hice la
carga de un archivo a memoria
            int i = 0;

            for(i=0; i<alObjetos.count; i++)
            {

                puesto= (PuestoClienteVo)alObjetos[i];
                session.Save(puesto);
            }
            tx.Commit();


ESTOY USANDO LA VERSION 1.1 DE HIBERNATE CON .NET FRAMEWORK 1.1



2008/9/4 Kash <[EMAIL PROTECTED]>

> Podrías copiar algo de tu código aquí para que podamos analizar el error?
> Sin ver nada te digo que el camino correcto es el de abrir la transacción
> al inicio del ciclo y hacer commit al final, el problema deben ser la forma
> en que utilizas los objetos que vas creando para persistirlos y como has
> mapeado las estrategias de implementación de ID en las entidades. NHibernate
> no estará distinguiendo una instancia de otra y en su cache interna de la
> session está tomando todas las instancias por la misma, por eso solo guarda
> la última.
>
>
>
> 2008/9/4 jmosco <[EMAIL PROTECTED]>
>
>>
>> Hola a todos, tengo un problema con el metodo SAVE
>>
>> Si abro una transaccion para guardar un objeto lo guarda pero no lo
>> realizo con transaccion no lo hace? quiero cargar 30000 registros en
>> una carga masiva, si le digo al metodo SAVE que abra una transaccion
>> cada vez que se invoque me abrira 30000 transacciones y eso alenta mi
>> proceso de carga a mas de 15 o 20 minutos
>>
>> Si no pongo transaccion el tiempo se reduce a 5 minutos pero no guarda
>> absolutamente nada
>>
>> Ahora si pongo el inicio de transaccion al inicio del ciclo para
>> guardar mis objetos y al final le doy Commit solo me guarda el ultimo
>> que paso por el metodo SAVE.
>>
>> Que puedo hacer?
>>
>>
>>
>
>
> --
>
> =================================
> Sergio Castillo Checa
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: 
NHibernate-Hispano@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---