Userというタイプの100個のオブジェクトがあり、各ユーザーに1対1の参照があるとします。 NHibernate configのバッチサイズは50に設定されています。したがって、100個のオブジェクトすべてを削除すると、NHibernateは200個のDBへの接続を開始します。私はそれぞれの接続で50のクエリで4つの接続でそれらを削除したいと思います。NHibernate:オブジェクトのセットを削除するには?
public void BatchDelete(IEnumerable<T> entitiesToDelete)
{
int batchSzie = Session.GetSessionImplementation().Batcher.BatchSize;
int batchedInsertsCount = 0;
foreach (var entity in entitiesToDelete)
{
batchedInsertsCount++;
Session.Delete(entity);
if (batchedInsertsCount % batchSzie == 0)
{
Session.Flush();
Session.Clear();
}
}
}
EDIT:以下のコードは期待通りに動作します私のバッチ挿入法からのコピー/ペーストである私は、取引にいることを言及するのを忘れてしまいました。
!0x Toni。私もその記事を読んだが、2006年に書かれたので、2011年に修正されたと思った。バッチ削除をしない理由があるかもしれない。 – mynkow