在NHibernate 3.2中删除多个对象

时间:2012-03-07 04:53:14

标签: lambda expression predicate nhibernate-3

在我的Repository我有这样的方法:

public int Delete(Expression<Func<TEntity, bool>> predicate) {
    var listToDelete = UnitOfWork.Session.Query<TEntity>().Where(predicate).ToList();
    foreach(var item in listToDelete)
        UnitOfWork.Session.Delete(item);
    return listToDelete.Count;
}
但似乎这种方法效果不佳!您是否有任何关于在NHibernate 3.2中删除对象列表(通过谓词)的建议?

1 个答案:

答案 0 :(得分:2)

使用IStatelessSession删除或更新多个对象。它会更快,因为身份映射不会减慢会话/操作的速度。

您还可以将HQL查询用于批处理操作。