2011-10-10 18 views
5

Básicamente recibo esta excepción al intentar eliminar una colección de entidades con nHibernate. A continuación se muestra el códigoNHibernate TooManyRowsAffectedException al intentar eliminar varios objetos

public void DeleteAll<T>(IList<T> entities) 
    { 
     using(var tx = session.BeginTransaction()) 
     { 
     try 
     { 
      entities.ForEach(e=>session.Delete(e)); 
      tx.Commit(); 
     } 
     catch(Exception) 
     { 
      tx.Rollback(); 
     } 
     } 
    } 

Usando HQL funciona sin ningún problema, pero preferiría que se adhieren a la aproximación LINQish .. Ah, y estoy conectando a una base de datos Oracle.

+0

esta excepción si una operación de eliminación elimina más filas de lo esperado. ¿Puedes verificar el SQL generado y la tabla de la base de datos para ver, qué enunciado podría eliminar más de una fila? – Firo

+1

Entiendo por qué se lanzó la excepción, solo espera que se afecte 1 fila (en este caso eliminada), pero ¿por qué ???? Nhprof no funciona en nuestro entorno de red corporativa :( – Duy

+1

log con log4net 'NHIbernate.SQL' en un archivo. Copie los sqls allí en un cliente oracle y ejecútelos allí para ver cuál elimina más de una fila – Firo

Respuesta

1

No se puede eliminar el elemento de foreach, intenta por y tener cuidado con el índice de para, después de eliminar el conjunto de índices -

Cuestiones relacionadas