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