Мне не нравится оставлять такие вещи, как размер пакета на волю случая, поэтому я проверяю, что я пакетирую все, когда сохраняю внутри явной транзакции, и это, кажется, помогает мне.
Session.NHibernateSession.SetBatchSize(data.Items.Count);
Session.NHibernateSession.FlushMode = FlushMode.Commit;
using (var tx = Session.NHibernateSession.BeginTransaction())
{
foreach (var o in data.Items)
{
//something else...
base.Save(o);
}
tx.Commit();
}
Session.NHibernateSession.SetBatchSize(0);