2011-10-10 53 views
5

基本上,我在嘗試使用nHibernate刪除實體集合時遇到此異常。下面是我的代碼嘗試刪除多個對象時出現NHibernate TooManyRowsAffectedException

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(); 
     } 
     } 
    } 

用HQL工作沒有任何問題,但我寧願堅持LINQish辦法..呵呵,我連接到Oracle數據庫。

+0

如果刪除操作刪除比預期更多的行則拋出該異常。你可以檢查生成的sql和數據庫表來查看哪些語句可能會刪除多行? – Firo

+1

我明白爲什麼拋出異常,它只預計1行受到影響(在這種情況下刪除),但爲什麼? Nhprof在我們的公司網絡環境下不工作:( – Duy

+1

將log4net'NHIbernate.SQL'記錄到一個文件中,將這些sqls複製到oracle客戶端並在那裏運行它們以查看哪一個刪除了多個行 – Firo

回答

1

您無法通過的foreach刪除項目,爭取和小心的索引,後刪除了一組索引 -

相關問題