什麼是加載集合和使用NHibernate更新所有項目的最佳方法。當前代碼加載50個對象並在其自己的事務中處理每個對象(如果1次失敗,則其他人都可以)。用NHibernate處理大量記錄
NH Profiler說每個會話都有太多的SQL查詢。
畢竟,你對這段代碼有什麼看法?
using (var session = sessionFactory.OpenSession())
{
var myCollection =
(from obj in session.Query<MyObject>()
select obj).Take(50);
foreach (var item in myCollection)
{
using (var tx = session.BeginTransaction())
{
try
{
// Do some stuff...
session.Update(item);
tx.Commit();
}
catch (Exception)
{
tx.Rollback();
}
}
}
}
我會在星期一嘗試無狀態會話並在這裏報告... – mynkow 2011-04-16 21:07:32
根據原始問題,您將如何/更新/每條記錄沒有將所有記錄同時加載到內存中? – pettys 2011-06-23 15:54:11
@pettys在這種情況下,我會使用純HQL和ExecuteUpdate() - > http://docs.jboss.org/hibernate/core/3.3/reference/en/html/batch.html#batch-direct – rebelliard 2011-06-23 18:19:27