什么是加载集合和使用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